A modern, minimal Voting System built with Go using Fiber and Tanstack Start.
Jille follows Clean Architecture principles to ensure maintainability, testability, and separation of concerns.
- User Authentication: Secure JWT-based authentication.
- Poll Management: Create, view, and manage polls and their options.
- Voting System: Secure and reliable voting mechanism.
- Clean Architecture: Domain-driven design with Hexagonal layers.
- Data Persistence: Robust PostgreSQL integration with GORM.
- Language: Go (1.25+)
- Backend Framework: Fiber v3
- ORM: GORM
- Database: PostgreSQL
- Security: JWT & Bcrypt
- Validation: Go Playground Validator
- Frontend Framwork: Tanstack Start
├── api/
│ └── middleware
├── app/
├── client/
├── cmd/
│ └── api/
├── config/
├── infra/
│ ├── database
│ └── persistence
├── internal/
│ ├── domain/
│ ├── application/
│ ├── delivery/
│ ├── common/
│ └── utils/
├── Makefile
├── go.mod
└── .env.example
- Go 1.25 or higher.
- PostgreSQL instance.
- Bun 1.2 runtime or higher
Copy the example environment file and fill in your credentials:
# .env.example
PORT=
JWT_ACCESS_TOKEN_SECRET=
JWT_REFRESH_TOKEN_SECRET=
DB_HOST=
DB_PORT=
DB_USER=
DB_PASSWORD=
DB_NAME=
DB_SSLMODE=
DB_TIMEZONE=
# client/.env.local
BACKEND_URL=http://localhost:9000
You can use the provided Makefile:
# To run the application in development mode
make run
# To build the binary
make build
# To run the frontend
make clientThe server will start at http://localhost:9000.
Distributed under the MIT License. See LICENSE for more information.