This is a repository to help me gain confidence in building in Go, and working with Cloud-native Infrastructure.
I'll be building a chat service that will do the following:
- Allow users to be created using a username. Upon creation, a user will be prompted to add in a name and a NIDA-like (SSN-like) information as well as prompting them to create a 4-digit pin.
- Allow users to join room by typing
/join <chatroom-id>
- In the chatroom, the users can send money to others by typing
/send <username> <amount>
, to confirm the transfer, they user will need to authorize by typing in their 4-digit pin. - Users can leave the chat room by typing
/leave
This excalidraw link shows a simple structure of how I intent to go about this. I'm sure there are better ways around this, But this setup is helpful for me to learn the things I want right now. Quick TLDR, I'll be creating 3 things
ChatterBox
service, which is a service to manage the chatrooms and usersKYC
service, which would house all personal identifying informationChatterBox Web
app, which is how the users would interact with the system.
For the purpose of learning,
- the services (Chatterbox and KYC) will be developed in Go
- The web app will be developed in React 18 using Vite tooling
- Database used will be PostgreSQL 15+
The entire project will HAVE to be able to run locally first. Then moving to cloud deployments:
- The services will be deployed in either Fly.io or Linode
- The web app will be deployed over at Vercel
- The database will be using Neon or Supabase
- To learn K8s and Docker properly, this project might also be setup to work in those environemnts
This would a slow journey, especially because I'll be building this in a from the free time I am able to get after work. I'll like to have completed this by this year, but I'll be updating this documentation rather frequently, to reflect the active changes will be reflected on this Trello board
This project isn't set up for code contirbutions (yet? maybe). But to feel free to chat / comment / critic things here. And when I have the energy / time, I might reply 🙂.
- Create repo and add link to
chatterbox-react
- Create repo and add link to
go-chatterbox-service
- Create repo and add link to
go-kyc-service