A simple real-time chatroom application built with Go and React.
- Real-time messaging using WebSockets
- Support for multiple chatrooms
- User accounts with JWT authentication
- RESTful API
- Server events/notifications via WebSocket
- Data persistence (rooms, chat history, etc.)
- User-friendly web interface
- Metrics
- Golang
- Gorilla WebSocket
- JWT (JSON Web Tokens)
- PostgreSQL
- Testify (testing framework)
- React, React Router
- CSS
- Javascript
- Docker (development)
- Terraform
- AWS
- Nginx
Clone the repository:
git clone https://github.com/npezzotti/gochat.git
cd gochatInstall dependencies:
go get ./...Build and run the application:
make runOpen your browser:
Visit http://localhost:8080
gochat/
├── cmd/
├── frontend/
├── internal/
└── terraform/
cmd/server: Main entrypoint of the serverfrontend/: React applicaiton and other JS comprising the UIinternal/api: REST API, HTTP handlers, middleware, and authenticationinternal/config: Configurationinternal/database/: Database interfaces and migrationsinternal/server/: Chat serverinternal/stats/: Metrics systeminternal/testutil/: Test utilsinternal/types/: Types used by both the chat server and APIterraform/: Terraform code and scripts used to provision infrastucture in AWS and deploy application
I created this project to deepen my understanding of real-time web applications and Go's concurrency model. It also serves as a showcase of my ability to design and implement scalable backend systems.
