A Go application demonstrating subscription service implementation with best practices.
Note: This project is currently under active development. Features and documentation may be incomplete or subject to change.
This educational project showcases how to build applications in Go, featuring:
- Clean architecture and project organization
- PostgreSQL database management
- Docker containerization
- Database migrations
- JWT authentication
- RESTful API design
- Stage: Alpha
- API Stability: Experimental
- Features: In Progress
- Core API implementation
- Authentication & authorization
- Database schema design
- Testing infrastructure
- API documentation
edata/
├── bin/ # Compiled binaries
├── cmd/ # Application entrypoints
│ ├── api/ # API server
│ └── migrate/ # DB migration tool
├── config/ # Configuration management
├── db/ # Database layer
├── infra/ # Infrastructure setup
├── service/ # Business logic
├── types/ # Core types/models
└── utils/ # Shared utilities
- Go 1.20 or higher
- Docker and Docker Compose
- Make
-
Clone the repository
git clone https://github.com/sudarakas/edata.git cd edata -
Set up environment
cp .env.example .env
-
Start database
docker-compose -f infra/db.yaml up -d
-
Run migrations
make migrate-up
-
Start server
make run
# Server
PUBLIC_HOST=http://localhost
PORT=8080
# Database
DB_USER=postgres
DB_PASSWORD=postgres
DB_HOST=localhost
DB_PORT=5432
DB_NAME=edata_db| Command | Description |
|---|---|
make run |
Start the application |
make migrate-up |
Run database migrations |
make migrate-down |
Rollback migrations |
make test |
Run tests |
make lint |
Run linters |
edata/
├── .env # Environment variables
├── bin/ # Compiled binaries
│ └── edata
├── cmd/ # Application entrypoints
│ ├── api/ # API server
│ │ └── main.go
│ └── migrate/ # Migration tool
│ ├── main.go
│ └── migrations/
├── config/ # Configuration
├── db/ # Database layer
├── go.mod # Go modules
├── go.sum # Module checksums
├── infra/ # Infrastructure
│ └── db.yaml # DB container config
├── Makefile # Build automation
├── service/ # Business logic
│ ├── auth/ # Authentication
│ └── user/ # User management
├── types/ # Core types
│ └── types.go
└── utils/ # Shared utilities
Currently, this project is in initial development and not accepting contributions. Once stable, contribution guidelines will be provided.
This project is licensed under the MIT License - see the LICENSE file for details.
Built with ❤️ using Go