edata

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.
π― Overview
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
π§ Development Status
- Stage: Alpha
- API Stability: Experimental
- Features: In Progress
Current Focus Areas
- Core API implementation
- Authentication & authorization
- Database schema design
- Testing infrastructure
- API documentation
ποΈ Project Structure
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
View detailed structure
π Getting Started
Prerequisites
- Go 1.20 or higher
- Docker and Docker Compose
- Make
Quick Start
-
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
βοΈ Configuration
Environment Variables
# Server
PUBLIC_HOST=http://localhost
PORT=8080
# Database
DB_USER=postgres
DB_PASSWORD=postgres
DB_HOST=localhost
DB_PORT=5432
DB_NAME=edata_db
π Available Commands
| 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 |
π Detailed Structure
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
π€ Contributing
Currently, this project is in initial development and not accepting contributions. Once stable, contribution guidelines will be provided.
π License
This project is licensed under the MIT License - see the LICENSE file for details.
Built with β€οΈ using Go