220 lines
5.2 KiB
Markdown
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]
|
|
|