Initial commit: SIBU 2.0 MISSION
This commit is contained in:
219
README.md
Normal file
219
README.md
Normal file
@ -0,0 +1,219 @@
|
||||
# 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]
|
||||
|
||||
Reference in New Issue
Block a user