rideaware-api/README.md
Cipher Vance 5e0ac13488 docs: update README for Go migration
- Replace Python setup instructions with Go development workflow
- Update environment variable configuration for PostgreSQL
- Change API port from 5000 to 8080
- Add Go-specific build, test, and deployment instructions
- Update project structure documentation
2025-09-18 20:06:37 -05:00

3.2 KiB

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

  1. Clone the Repository

    git clone https://github.com/rideaware/rideaware-api.git
    cd rideaware-api
    
  2. Install Go Dependencies

    go mod tidy
    
  3. 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=your_secret_key_for_sessions
PORT=8080

# 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 endpoint
  • POST /auth/signup - User registration
  • POST /auth/login - User authentication
  • POST /auth/logout - User logout

Running with Docker

To run the application in a containerized environment:

  1. Build the Docker Image:
docker build -t rideaware-api .
  1. 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 accounts
  • user_profiles - User profile information

Running Tests

To run tests:

go test ./...

To run tests with coverage:

go test -cover ./...

Development

To add new features:

  1. Create models in the models/ directory
  2. Add business logic in the services/ directory
  3. Define API routes in the routes/ directory
  4. 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.