kisanlink-ecom

module
v0.2.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 14, 2025 License: GPL-3.0

README ΒΆ

A modern, modular e-commerce API built with Go, Gin, and the kisanlink-db package for flexible data management.

πŸš€ Quick Start

Prerequisites
  • Go 1.24+
  • Docker & Docker Compose
  • Git
Development Setup
  1. Clone the repository

    git clone <repository-url>
    cd kisanlink-ecom
    
  2. Set up environment variables

    cp .env.example .env
    # Edit .env with your preferred settings
    
  3. Start development environment

    ./scripts/start-dev.sh
    

    This script will:

    • Start PostgreSQL and Redis containers
    • Install Go dependencies
    • Build the application
    • Display connection information
  4. Run the API server

    # Using the built binary
    ./bin/server
    
    # Or run directly with Go
    go run cmd/server/main.go
    

πŸ—„οΈ Database Setup

The project includes a docker-compose.yml file that sets up:

  • PostgreSQL 15 database
  • Redis for caching
  • pgAdmin for database management

Default Credentials:

  • Database: kisanlink_ecom
  • Username: postgres
  • Password: your_secure_password_here (change in .env)

pgAdmin Access:

Alternative Database Options

The application supports multiple database backends:

  1. In-Memory (Testing)

    DB_PROVIDER=inmemory
    
  2. DynamoDB (Production)

    DB_PROVIDER=dynamodb
    AWS_REGION=us-east-1
    AWS_ACCESS_KEY_ID=your_key
    AWS_SECRET_ACCESS_KEY=your_secret
    

πŸ› οΈ Development Commands

# Install dependencies
go mod download

# Run tests
go test ./...

# Run tests with coverage
go test ./... -cover

# Build the application
go build -o bin/server cmd/server/main.go

# Run linter
make lint

# Format code
make format

# Run all quality checks
make check

🐳 Docker Commands

# Start all services
docker-compose up -d

# View logs
docker-compose logs -f

# Stop all services
docker-compose down

# Restart services
docker-compose restart

# Database shell access
docker-compose exec postgres psql -U postgres -d kisanlink_ecom

# Redis CLI access
docker-compose exec redis redis-cli

πŸ—οΈ Project Structure

kisanlink-ecom/
β”œβ”€β”€ cmd/
β”‚   └── server/          # Application entry point
β”œβ”€β”€ internal/
β”‚   β”œβ”€β”€ config/          # Configuration management
β”‚   β”œβ”€β”€ database/        # Database manager with multi-backend support
β”‚   β”œβ”€β”€ handlers/        # HTTP request handlers
β”‚   β”œβ”€β”€ middleware/      # HTTP middleware
β”‚   β”œβ”€β”€ models/          # Business models extending base.BaseModel
β”‚   β”œβ”€β”€ repositories/    # Data access layer with filtering
β”‚   β”œβ”€β”€ routes/          # Route definitions
β”‚   β”œβ”€β”€ server/          # Server setup and configuration
β”‚   └── utils/           # Utility functions and helpers
β”œβ”€β”€ scripts/             # Development and deployment scripts
β”œβ”€β”€ docs/                # Documentation
β”œβ”€β”€ .env.example         # Environment variables template
β”œβ”€β”€ docker-compose.yml   # Docker services definition
└── Makefile            # Build and development commands

πŸ”§ Configuration

The application uses environment variables for configuration. See .env.example for all available options.

Key Configuration Sections:
  • Server: Port, mode, API version
  • Database: Provider, connection settings, pool configuration
  • JWT: Secret key, token expiry
  • Redis: Connection settings for caching
  • Email: SMTP configuration for notifications
  • File Upload: Directory and size limits
  • CORS: Cross-origin request settings
  • Logging: Level and format configuration

πŸ§ͺ Testing

# Run all tests
go test ./...

# Run tests with verbose output
go test ./... -v

# Run tests with coverage
go test ./... -cover

# Run integration tests
go test ./internal -v

# Run specific test package
go test ./internal/handlers -v

πŸ“Š API Endpoints

Health Check
  • GET /health - Service health status
Authentication
  • POST /api/v1/auth/login - User login
  • POST /api/v1/auth/register - User registration
  • POST /api/v1/auth/logout - User logout
Users
  • GET /api/v1/users - List users
  • POST /api/v1/users - Create user
  • GET /api/v1/users/:id - Get user by ID
  • PUT /api/v1/users/:id - Update user
  • DELETE /api/v1/users/:id - Delete user
Products
  • GET /api/v1/products - List products
  • POST /api/v1/products - Create product
  • GET /api/v1/products/:id - Get product by ID
  • PUT /api/v1/products/:id - Update product
  • DELETE /api/v1/products/:id - Delete product
Orders
  • GET /api/v1/orders - List orders
  • POST /api/v1/orders - Create order
  • GET /api/v1/orders/:id - Get order by ID
  • PUT /api/v1/orders/:id - Update order
  • DELETE /api/v1/orders/:id - Delete order

πŸš€ Deployment

The application is production-ready and can be deployed using:

  1. Docker: Build and run the container
  2. Binary: Compile and deploy the binary
  3. Cloud Services: AWS, GCP, Azure with appropriate database services

🀝 Contributing

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Add tests for new functionality
  5. Run make check to ensure code quality
  6. Submit a pull request

πŸ“ License

This project is licensed under the MIT License - see the LICENSE file for details.

πŸ†˜ Troubleshooting

Database Connection Issues
  1. Ensure PostgreSQL container is running:

    docker-compose ps
    
  2. Check database logs:

    docker-compose logs postgres
    
  3. Test database connection:

    docker-compose exec postgres pg_isready -U postgres
    
Build Issues
  1. Ensure Go modules are up to date:

    go mod tidy
    
  2. Clear module cache if needed:

    go clean -modcache
    go mod download
    
Port Conflicts

If you encounter port conflicts, update the ports in docker-compose.yml and your .env file accordingly.

πŸ“ž Support

For questions and support, please open an issue in the GitHub repository.

Directories ΒΆ

Path Synopsis
cmd
grpc-server command
Package main implements the gRPC server for the Collaborator service
Package main implements the gRPC server for the Collaborator service
migrate command
scheduler command
server command
testrunner command
debug
health-check command
test-endpoints command
Package docs Code generated by swaggo/swag.
Package docs Code generated by swaggo/swag.
entities
internal
aaa
Package aaa provides a production-ready AAA service client with connection pooling, circuit breaker, retry logic, and comprehensive error handling for address management.
Package aaa provides a production-ready AAA service client with connection pooling, circuit breaker, retry logic, and comprehensive error handling for address management.
domain/collaborator
Package collaborator provides domain logic for collaborator management including state machine enforcement for status transitions with prerequisite validation.
Package collaborator provides domain logic for collaborator management including state machine enforcement for status transitions with prerequisite validation.
grpc
Package grpc provides gRPC server initialization and configuration
Package grpc provides gRPC server initialization and configuration
grpc/handlers/collaborator
Package collaborator implements the gRPC handlers for collaborator management
Package collaborator implements the gRPC handlers for collaborator management
grpc/interceptors
Package interceptors provides gRPC interceptors for the server
Package interceptors provides gRPC interceptors for the server
handlers/actors
Package actors provides HTTP handlers for actor-related operations including organization collaborators.
Package actors provides HTTP handlers for actor-related operations including organization collaborators.
handlers/discounts
Package discounts provides HTTP handlers for discount rule operations.
Package discounts provides HTTP handlers for discount rule operations.
handlers/roles
Package roles provides HTTP handlers for role management operations including user, organization, and ecommerce roles.
Package roles provides HTTP handlers for role management operations including user, organization, and ecommerce roles.
handlers/sla
Package sla provides HTTP handlers for service level agreement operations.
Package sla provides HTTP handlers for service level agreement operations.
handlers/taxation
Package taxation provides HTTP handlers for tax exemption and taxation-related operations.
Package taxation provides HTTP handlers for tax exemption and taxation-related operations.
handlers/user
Package user provides HTTP handlers for user management operations.
Package user provides HTTP handlers for user management operations.
repositories/actors
Package actors provides repository operations for actor-related entities.
Package actors provides repository operations for actor-related entities.
repositories/common
Package common provides shared repository functionality including soft delete filtering.
Package common provides shared repository functionality including soft delete filtering.
repositories/discounts
Package discounts provides repository operations for discount-related entities.
Package discounts provides repository operations for discount-related entities.
repositories/roles
Package roles provides repository operations for role-related entities.
Package roles provides repository operations for role-related entities.
repositories/sequence
Package sequence provides repository operations for managing sequence counters.
Package sequence provides repository operations for managing sequence counters.
repositories/services
Package services provides repository operations for service-related entities.
Package services provides repository operations for service-related entities.
repositories/taxation
Package taxation provides repository operations for taxation-related entities.
Package taxation provides repository operations for taxation-related entities.
repositories/user
Package user provides repository operations for user entities.
Package user provides repository operations for user entities.
services/actors
Package actors provides service layer for organization collaborator management
Package actors provides service layer for organization collaborator management
services/discounts
Package discounts provides service layer for discount rule management
Package discounts provides service layer for discount rule management
services/gst
Package gst provides GST number validation and management services for Indian GST numbers.
Package gst provides GST number validation and management services for Indian GST numbers.
services/otp
Package otp provides OTP generation, validation, and delivery services
Package otp provides OTP generation, validation, and delivery services
services/roles
Package roles provides service layer for ecommerce role management
Package roles provides service layer for ecommerce role management
services/sequence
Package sequence provides business logic for generating unique IDs using sequence counters.
Package sequence provides business logic for generating unique IDs using sequence counters.
services/sla
Package sla provides service layer for service-level agreement management
Package sla provides service layer for service-level agreement management
services/taxation
Package taxation provides service layer for tax exemption management
Package taxation provides service layer for tax exemption management
proto
tests
mocks
Package mocks provides mock implementations for testing purposes.
Package mocks provides mock implementations for testing purposes.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL