first commit
This commit is contained in:
commit
6e354ba041
109 changed files with 12110 additions and 0 deletions
86
backend/README.md
Normal file
86
backend/README.md
Normal file
|
|
@ -0,0 +1,86 @@
|
|||
# Silos Backend
|
||||
|
||||
FastAPI backend with PostgreSQL/SQLite (users/auth) and MongoDB (workspace documents).
|
||||
|
||||
## Setup
|
||||
|
||||
### 1. Start databases
|
||||
|
||||
From the project root:
|
||||
|
||||
```bash
|
||||
docker compose up mongo -d
|
||||
```
|
||||
|
||||
Optional (PostgreSQL instead of SQLite):
|
||||
|
||||
```bash
|
||||
docker compose up mongo postgres -d
|
||||
```
|
||||
|
||||
Then confirm the API: `GET http://localhost:8000/api/v1/health` should report `"mongodb": "connected"`.
|
||||
|
||||
MongoDB is required for Silo pages, Sketch whiteboards, Stead spaces, and Shed docs.
|
||||
SQLite is the default for user authentication (`DATABASE_URL` in `.env`).
|
||||
|
||||
### 2. Configure environment
|
||||
|
||||
```bash
|
||||
cd backend
|
||||
copy .env.example .env
|
||||
```
|
||||
|
||||
### 3. Create virtual environment & install dependencies
|
||||
|
||||
```bash
|
||||
python -m venv venv
|
||||
venv\Scripts\activate
|
||||
pip install -r requirements.txt
|
||||
```
|
||||
|
||||
### 4. Run the API
|
||||
|
||||
```bash
|
||||
uvicorn app.main:app --reload --port 8000
|
||||
```
|
||||
|
||||
API docs: [http://localhost:8000/docs](http://localhost:8000/docs)
|
||||
|
||||
## API Endpoints
|
||||
|
||||
| Method | Endpoint | Description |
|
||||
|--------|----------|-------------|
|
||||
| GET | `/api/v1/health` | Health check |
|
||||
| POST | `/api/v1/auth/register` | Create new user |
|
||||
| POST | `/api/v1/auth/login` | Login & get JWT tokens |
|
||||
| GET | `/api/v1/auth/me` | Get current user (requires auth) |
|
||||
| PATCH | `/api/v1/auth/me` | Update user profile |
|
||||
| POST | `/api/v1/auth/forgot-password` | Request password reset |
|
||||
| POST | `/api/v1/auth/reset-password` | Reset password with token |
|
||||
| GET | `/api/v1/documents` | List documents (optional `?type=` or `?stead_id=`) |
|
||||
| GET | `/api/v1/documents/search?q=` | Search documents by title, type, author, body |
|
||||
| GET | `/api/v1/documents/{id}` | Get a document |
|
||||
| POST | `/api/v1/documents` | Create a document |
|
||||
| PATCH | `/api/v1/documents/{id}` | Update title/content |
|
||||
| POST | `/api/v1/documents/{id}/share` | Invite a user by email/username |
|
||||
| DELETE | `/api/v1/documents/{id}/share/{user_id}` | Remove a member |
|
||||
| DELETE | `/api/v1/documents/{id}` | Delete a document |
|
||||
| WS | `/api/v1/ws/collab/{id}` | Live collab for Shed meeting notes |
|
||||
|
||||
## Project Structure
|
||||
|
||||
```
|
||||
backend/
|
||||
├── app/
|
||||
│ ├── main.py # FastAPI app entry
|
||||
│ ├── config.py # Settings from .env
|
||||
│ ├── database.py # PostgreSQL (SQLAlchemy)
|
||||
│ ├── mongo.py # MongoDB connection
|
||||
│ ├── models/ # SQLAlchemy models
|
||||
│ ├── schemas/ # Pydantic schemas
|
||||
│ ├── routers/ # API routes
|
||||
│ ├── services/ # Business logic
|
||||
│ └── utils/ # Security helpers
|
||||
├── requirements.txt
|
||||
└── .env.example
|
||||
```
|
||||
Loading…
Add table
Add a link
Reference in a new issue