- Development,
In Progress
(In Progress | Maintaining | Archived)
FYI: This is my first time writing go
code in a 'realistic' project so - don't hate ;)
Fixed Term Track was built to help me track my Fixed Term investments (not that I have a lot of them ha.)
It would help me aggregate these term investments and track their maturity dates, giving me a heads-up on any upcoming maturities / return dates.
At the moment though, this is a work in progress, and I'm still figuring out the best way to structure the data and the application.
Aaaand how to interface with it, although I'm just leaning towards a mobile app to get some practice >:)
- Creating a record of investment
- Creating a record of investment returns
- Retrieving metrics on investments and associated returns
- Auto-scheduling reminders for upcoming returns through telegram (so you don't forget to check ;>)
- Validations on input data
- Error handling
- Docker Image for deployment
- Comprehensive Testing
- Unit Tests
- Integration Tests
- Documentation
- GoDoc (?)
- Openapi Specification for APIs
Golang
- Database: PostgreSQL
- Notifications: Telegram Bot API
- ORM: GORM
- Web Framework: Gin
- Logging: Zap
- Environment Management: Viper
- Development:
- Docker (Compose) for local development
- Air for hot reloading
- Just for command running
- Mise for version management
Prerequisites:
- Go 1.22
- The tools listed above under
Development
(mise
is optional) - A telegram bot token and your chat ID in the
.env
file
Do the below:
go mod download # Get the dependencies
go mod verify # Verify the dependencies
cp .env.example .env # Copy the example env file, make sure to get your telegram bot token!
just dev # Starts the server
Check the examples
directory for examples on setting up the server.
running-server-with-compose
- There's an example of a compose file that runs the server with a postgres instance, it pulls the latest image from dockerhub
- The
.env
is slightly different (since it connects to postgres on the internal network), and the telegram credentials are required
Feel free to fork and raise a PR if you're interested in contributing to this project :)
You can create an issue
to raise any bugs or have a suggestion.
If you do use this project as a reference, let me know! I'd love to hear about it.