Files
SIB/README.md

220 lines
5.2 KiB
Markdown

# SIBU - Sistema de Transporte
A full-stack public transportation application for tracking bus routes, schedules, and providing transportation services information.
## Project Structure
```
sibu/
├── backend/ # FastAPI backend (uv)
├── frontend/ # Vue3 frontend (Bun)
├── old/ # Archived Flutter app
└── .cursor/ # Cursor IDE rules
```
## Tech Stack
### Backend
- **FastAPI** - Modern Python web framework
- **SQLModel** - SQL database ORM (combines SQLAlchemy + Pydantic)
- **PostgreSQL** - Database
- **uv** - Fast Python package manager
- **Alembic** - Database migrations
### Frontend
- **Vue 3** - Progressive JavaScript framework
- **Vite** - Fast build tool
- **TypeScript** - Type-safe JavaScript
- **Pinia** - State management
- **Vue Router** - Client-side routing
- **Bun** - Fast JavaScript runtime and package manager
- **Google Maps API** - Map integration
## Getting Started
### Prerequisites
- Python 3.13+ (for backend)
- uv (Python package manager)
- Node.js 18+ or Bun (for frontend)
- PostgreSQL database
- Make (for using Makefile commands)
### Quick Start with Makefile
The easiest way to get started is using the provided Makefile:
1. Install all dependencies:
```bash
make setup
```
2. Set up environment variables:
```bash
# Backend: Copy and edit .env.development
cd backend && cp .env.example .env.development
# Edit backend/.env.development with your database URL
# Frontend: Copy and edit .env.development
cd frontend && cp .env.example .env.development
# Edit frontend/.env.development with your API URL and Google Maps key
```
3. Apply database migrations:
```bash
make migrate-up
```
4. Run both backend and frontend:
```bash
make dev
```
Or run them separately:
```bash
make dev-backend # Backend only (http://localhost:8000)
make dev-frontend # Frontend only (http://localhost:5173)
```
### Manual Setup
#### Backend Setup
1. Navigate to backend directory:
```bash
cd backend
```
2. Install dependencies:
```bash
uv sync
```
3. Set up environment variables:
```bash
# Copy and edit .env.development
cp .env.example .env.development
# Edit .env.development with your database URL
```
4. Run database migrations:
```bash
uv run alembic upgrade head
```
5. Start the development server:
```bash
uv run fastapi dev app/main.py
```
The API will be available at `http://localhost:8000`
#### Frontend Setup
1. Navigate to frontend directory:
```bash
cd frontend
```
2. Install dependencies:
```bash
bun install
```
3. Set up environment variables:
```bash
# Copy and edit .env.development
cp .env.example .env.development
# Edit .env.development with your API URL and Google Maps key
```
4. Start the development server:
```bash
bun run dev
```
The app will be available at `http://localhost:5173`
## Environment Variables
### Backend (.env.development)
```
DATABASE_URL=postgresql+asyncpg://localhost:5432/sibu_dev
ENVIRONMENT=development
DEBUG=true
```
### Frontend (.env.development)
```
VITE_API_URL=http://localhost:8000
VITE_GOOGLE_MAPS_API_KEY=your-google-maps-api-key-here
```
## API Endpoints
- `GET /api/routes` - Get all routes
- `GET /api/routes/{id}` - Get route by ID
- `GET /api/routes/{id}/stops` - Get stops for a route
- `GET /api/bus-stops` - Get all bus stops
- `GET /api/bus-stops/{id}` - Get bus stop by ID
- `GET /api/bus-stops/{id}/routes` - Get routes for a bus stop
- `GET /api/schedules` - Get schedules (query params: route_id, stop_id)
- `GET /api/coupons` - Get coupons
- `GET /api/taxis` - Get taxis
## Development
### Makefile Commands
The project includes a Makefile with convenient commands:
**Installation:**
- `make install` - Install all dependencies
- `make install-backend` - Install backend dependencies only
- `make install-frontend` - Install frontend dependencies only
- `make setup` - Full setup (install + instructions)
**Development:**
- `make dev` - Run both backend and frontend concurrently
- `make dev-backend` - Run backend development server
- `make dev-frontend` - Run frontend development server
**Migrations:**
- `make migrate-up` - Apply all pending migrations
- `make migrate-down` - Rollback last migration
- `make migrate-create NAME=migration_name` - Create a new migration
- `make migrate-history` - Show migration history
- `make migrate-current` - Show current migration version
**Building:**
- `make build` - Build both backend and frontend
- `make build-backend` - Build backend only
- `make build-frontend` - Build frontend only
**Other:**
- `make clean` - Clean all build artifacts
- `make test` - Run all tests
- `make help` - Show all available commands
### Manual Commands
#### Backend Commands
- `uv add <package>` - Add a dependency
- `uv run fastapi dev app/main.py` - Run development server
- `uv run fastapi run app/main.py` - Run production server
- `uv run alembic upgrade head` - Run database migrations
- `uv run alembic revision --autogenerate -m "name"` - Create migration
#### Frontend Commands
- `bun add <package>` - Add a dependency
- `bun run dev` - Run development server
- `bun run build` - Build for production
## Project Conventions
See `.cursor/rules/main.mdc` for detailed coding conventions and best practices.
## License
[Your License Here]