Initial commit: Backend API Phase 1a complete
- FastAPI backend with JWT auth - PostgreSQL database schema - Trees and Sessions CRUD APIs - Export functionality (Markdown, Text, HTML) - Docker setup for local development - Alembic migrations
This commit is contained in:
125
backend/README.md
Normal file
125
backend/README.md
Normal file
@@ -0,0 +1,125 @@
|
||||
# Troubleshooting Decision Tree - Backend API
|
||||
|
||||
FastAPI backend for the Troubleshooting Decision Tree application.
|
||||
|
||||
## Quick Start
|
||||
|
||||
### 1. Set up Python environment
|
||||
|
||||
```bash
|
||||
cd backend
|
||||
python -m venv venv
|
||||
|
||||
# Windows
|
||||
venv\Scripts\activate
|
||||
|
||||
# macOS/Linux
|
||||
source venv/bin/activate
|
||||
|
||||
pip install -r requirements.txt
|
||||
```
|
||||
|
||||
### 2. Start PostgreSQL database
|
||||
|
||||
Using Docker:
|
||||
```bash
|
||||
docker-compose up -d
|
||||
```
|
||||
|
||||
Or install PostgreSQL locally and create a database:
|
||||
```sql
|
||||
CREATE DATABASE decision_tree;
|
||||
```
|
||||
|
||||
### 3. Configure environment
|
||||
|
||||
Copy the example env file and update as needed:
|
||||
```bash
|
||||
cp .env.example .env
|
||||
```
|
||||
|
||||
### 4. Run database migrations
|
||||
|
||||
```bash
|
||||
alembic upgrade head
|
||||
```
|
||||
|
||||
### 5. Start the server
|
||||
|
||||
```bash
|
||||
uvicorn app.main:app --reload --host 0.0.0.0 --port 8000
|
||||
```
|
||||
|
||||
The API will be available at:
|
||||
- API: http://localhost:8000
|
||||
- Docs: http://localhost:8000/api/docs
|
||||
- ReDoc: http://localhost:8000/api/redoc
|
||||
|
||||
## API Endpoints
|
||||
|
||||
### Authentication
|
||||
- `POST /api/v1/auth/register` - Register new user
|
||||
- `POST /api/v1/auth/login` - Login (form data)
|
||||
- `POST /api/v1/auth/login/json` - Login (JSON body)
|
||||
- `POST /api/v1/auth/refresh` - Refresh token
|
||||
- `GET /api/v1/auth/me` - Get current user
|
||||
- `POST /api/v1/auth/logout` - Logout
|
||||
|
||||
### Trees
|
||||
- `GET /api/v1/trees` - List all trees
|
||||
- `GET /api/v1/trees/categories` - List categories
|
||||
- `GET /api/v1/trees/search?q=query` - Search trees
|
||||
- `GET /api/v1/trees/{id}` - Get specific tree
|
||||
- `POST /api/v1/trees` - Create tree (engineer/admin)
|
||||
- `PUT /api/v1/trees/{id}` - Update tree (engineer/admin)
|
||||
- `DELETE /api/v1/trees/{id}` - Delete tree (admin)
|
||||
|
||||
### Sessions
|
||||
- `GET /api/v1/sessions` - List user's sessions
|
||||
- `GET /api/v1/sessions/{id}` - Get specific session
|
||||
- `POST /api/v1/sessions` - Start new session
|
||||
- `PUT /api/v1/sessions/{id}` - Update session
|
||||
- `POST /api/v1/sessions/{id}/complete` - Complete session
|
||||
- `POST /api/v1/sessions/{id}/export` - Export session
|
||||
|
||||
## Development
|
||||
|
||||
### Create new migration
|
||||
```bash
|
||||
alembic revision --autogenerate -m "description"
|
||||
```
|
||||
|
||||
### Run migrations
|
||||
```bash
|
||||
alembic upgrade head
|
||||
```
|
||||
|
||||
### Rollback migration
|
||||
```bash
|
||||
alembic downgrade -1
|
||||
```
|
||||
|
||||
## Project Structure
|
||||
|
||||
```
|
||||
backend/
|
||||
├── alembic/ # Database migrations
|
||||
│ └── versions/
|
||||
├── app/
|
||||
│ ├── api/
|
||||
│ │ ├── endpoints/ # API route handlers
|
||||
│ │ ├── deps.py # Dependencies (auth, etc.)
|
||||
│ │ └── router.py # Main router
|
||||
│ ├── core/
|
||||
│ │ ├── config.py # Settings
|
||||
│ │ ├── database.py # DB connection
|
||||
│ │ └── security.py # JWT, password hashing
|
||||
│ ├── models/ # SQLAlchemy models
|
||||
│ ├── schemas/ # Pydantic schemas
|
||||
│ └── main.py # FastAPI app
|
||||
├── tests/
|
||||
├── alembic.ini
|
||||
├── docker-compose.yml
|
||||
├── requirements.txt
|
||||
└── README.md
|
||||
```
|
||||
Reference in New Issue
Block a user