A Go-based backend API for AmalaJeun—a platform for discovering Amala spots in Lagos, Nigeria. The API includes AI agent capabilities for adding, verifying, and discovering spots.
# AmalaJẹun Backend API
A Go-based backend API for AmalaJẹun — a platform for discovering Amala spots in Lagos, Nigeria. The API includes AI agent capabilities for adding, verifying, and discovering spots.
## Features
- **Spot Management**: Add, list, and verify Amala spots
- **Review System**: Add and retrieve reviews for spots
- **Multiple Sources**: Support for user-generated, AI agent, and scraper-sourced data
- **Verification System**: Mark spots as verified
- **Pagination**: Efficient data retrieval with pagination support
- **Filtering**: Filter spots by verification status and source
## Tech Stack
- **Language**: Go 1.25.1
- **Framework**: Gin (HTTP web framework)
- **Database**: PostgreSQL
- **ORM**: GORM
- **Architecture**: Clean architecture with separate packages for models, handlers, routes, and database
## Project Structure
```
AmalaJẹun/
├── main.go # Application entry point
├── go.mod # Go module dependencies
├── models/ # Data models
│ ├── spot.go # Spot model
│ └── review.go # Review model
├── database/ # Database configuration
│ └── database.go # Connection and migration setup
├── handlers/ # HTTP request handlers
│ ├── spot_handlers.go # Spot-related endpoints
│ └── review_handlers.go # Review-related endpoints
└── routes/ # Route definitions
└── routes.go # API route setup
```
## Database Setup
### Prerequisites
- PostgreSQL installed and running
- Database created (default: `amalajẹun`)
### Environment Variables
Set the following environment variables (optional, defaults provided):
```bash
DB_HOST=localhost
DB_PORT=5432
DB_USER=postgres
DB_PASSWORD=password
DB_NAME=amalajeun
DB_SSLMODE=disable
PORT=8080
GIN_MODE=debug
```
## Installation & Running
1. **Clone and navigate to the project**:
```bash
cd AmalaJẹun
```
2. **Install dependencies**:
```bash
go mod tidy
```
3. **Run the application**:
` …