| config | ||
| models | ||
| routes | ||
| services | ||
| .dockerignore | ||
| .gitignore | ||
| Dockerfile | ||
| go.mod | ||
| go.sum | ||
| LICENSE | ||
| main.go | ||
| README.md | ||
| TODO.md | ||
RideAware API
Train with Focus. Ride with Awareness
RideAware API is the backend service for the RideAware platform, providing endpoints for user authentication and structured workout management.
RideAware is a comprehensive cycling training platform designed to help riders stay aware of their performance, progress, and goals.
Whether you're building a structured training plan, analyzing ride data, or completing workouts indoors, RideAware keeps you connected to every detail of your ride.
Getting Started
Prerequisites
Ensure you have the following installed on your system:
- Docker
- Go 1.21 or later
- PostgreSQL (for local development, optional)
Setting Up the Project
-
Clone the Repository
git clone https://github.com/rideaware/rideaware-api.git cd rideaware-api -
Install Go Dependencies
go mod tidy -
Build the Application
go build -o rideaware-api
Configuration
The application uses environment variables for configuration. Create a .env file in the root directory and define the following variables:
# Database Configuration
PG_HOST=your_postgres_host
PG_PORT=5432
PG_DATABASE=rideaware
PG_USER=your_postgres_user
PG_PASSWORD=your_postgres_password
# Application Configuration
# SECRET_KEY should be a random 32+ byte string; rotate on compromise.
SECRET_KEY=your_secret_key_for_sessions
PORT=8080
PG_SSLMODE=require # use "disable" only for local dev
# Email Configuration (Optional)
SMTP_SERVER=your_smtp_server
SMTP_PORT=465
SMTP_USER=your_email@domain.com
SMTP_PASSWORD=your_email_password
Running the Application
Development Mode
go run main.go
The application will be available at http://localhost:8080.
Production Mode
./rideaware-api
API Endpoints
GET /health- Health check endpointPOST /auth/signup- User registrationPOST /auth/login- User authenticationPOST /auth/logout- User logout
Running with Docker
To run the application in a containerized environment:
- Build the Docker Image:
docker build -t rideaware-api .
- Run the Container
docker run -d -p 8080:8080 --env-file .env rideaware-api
The application will be available at http://localhost:8080.
Example Dockerfile
FROM golang:1.21-alpine AS builder
WORKDIR /app
COPY go.mod go.sum ./
RUN go mod download
COPY . .
RUN go build -o rideaware-api
FROM alpine:latest
RUN apk --no-cache add ca-certificates
WORKDIR /root/
COPY --from=builder /app/rideaware-api .
CMD ["./rideaware-api"]
Database Migration
The application automatically runs database migrations on startup using GORM's AutoMigrate feature. This will create the necessary tables:
users- User accountsuser_profiles- User profile information
Running Tests
To run tests:
go test ./...
To run tests with coverage:
go test -cover ./...
Development
To add new features:
- Create models in the
models/directory - Add business logic in the
services/directory - Define API routes in the
routes/directory - Register routes in
main.go
Contributing
Contributions are welcome! Please create a pull request or open an issue for any improvements or bug fixes.
License
This project is licensed under the AGPL-3.0 License.