Files
mapmaker/README.md
Shihaam Abdul Rahman 61ba40c7d2
All checks were successful
Build and deploy / Build and Push Docker Images (push) Successful in 2m30s
update docs
2025-12-13 19:41:36 +05:00

122 lines
2.8 KiB
Markdown

# ISP Wiremap Application
A web-based mapping application for managing ISP network infrastructure with real-time collaboration features.
## Tech Stack
- **Backend:** FastAPI with Python 3, PostgreSQL 15 with PostGIS
- **Frontend:** React 19 with TypeScript, Vite, Leaflet for mapping
- **Authentication:** JWT tokens with bcrypt password hashing
- **Real-time:** WebSockets for collaborative editing
## Getting Started
### Run Migrations
```bash
docker compose exec python alembic upgrade head
```
### Start the Application
```bash
docker compose up -d
```
The application will be available at `http://localhost:8000`
## User Management
### Create Admin User
Interactively create a new admin user with username, email, and password:
```bash
docker compose exec python python scripts/create_admin.py
```
### List Users
View all users in the system with their details (username, email, admin status, creation date):
```bash
docker compose exec python python scripts/manage_users.py list
```
### Reset User Password
Reset a user's password by providing their username, email, or user ID:
```bash
docker compose exec python python scripts/manage_users.py reset-password <username|email|user_id>
```
### Delete User
Delete a user from the system (requires confirmation, affects all their maps and shares):
```bash
docker compose exec python python scripts/manage_users.py delete <username|email|user_id>
```
### Toggle Admin Status
Grant or revoke admin privileges for a user:
```bash
docker compose exec python python scripts/manage_users.py toggle-admin <username|email|user_id>
```
## Production Deployment
Example Docker Compose configuration for production:
```yaml
services:
app:
hostname: mapmaker
image: git.shihaam.dev/sarlink/mapmaker/api
env_file: .env
volumes:
- ./storage/images:/var/www/html/storage/images
depends_on:
- postgres
nginx:
hostname: mapmaker-nginx
image: git.shihaam.dev/sarlink/mapmaker/nginx
volumes_from:
- app
ports:
- 8000:80
depends_on:
- app
postgres:
image: postgis/postgis:15-3.3
hostname: database
restart: always
environment:
POSTGRES_USER: mapmaker
POSTGRES_PASSWORD: mapmaker
POSTGRES_DB: mapmaker
volumes:
- ./storage/database:/var/lib/postgresql/data
# ports:
# - "5432:5432"
```
## Environment Configuration
Copy `.env.example` to `.env` and configure the required variables:
- `SECRET_KEY` - JWT secret key for token signing
- `DATABASE_URL` - PostgreSQL connection string
- `ALLOW_REGISTRATION` - Enable/disable public user registration (default: false)
- `ACCESS_TOKEN_EXPIRE_MINUTES` - JWT access token lifetime (default: 30)
- `REFRESH_TOKEN_EXPIRE_DAYS` - JWT refresh token lifetime (default: 7)
## License
GPL v2