StepIn - physical meeting application.
backend/
│
├── app/ # Main application package
│ ├── __init__.py # Package initialization
│ ├── main.py # FastAPI application creation
│ │
│ ├── api/ # API endpoints
│ │ ├── __init__.py # Package initialization
│ │ └── api_v1/ # API version 1
│ │ ├── __init__.py # Package initialization
│ │ ├── api.py # Router aggregation
│ │ └── endpoints/ # Endpoint modules
│ │ ├── __init__.py # Package initialization
│ │ ├── chat.py # Chat API endpoints
│ │ ├── meetings.py # Meetings API endpoints
│ │ └── users.py # Users API endpoints
│ │
│ ├── core/ # Core functionality
│ │ ├── config.py # Configuration settings
│ │ ├── constants.py # Application constants
│ │ └── scheduler.py # Meeting scheduler
│ │
│ ├── db/ # Database models and operations
│ │ └── database.py # Database access layer
│ │
│ ├── models/ # Pydantic models for API
│ │ ├── __init__.py # Package initialization
│ │ ├── meeting.py # Meeting models
│ │ ├── message.py # Chat message models
│ │ └── user.py # User models
│ │
│ ├── services/ # Business logic services
│ │ ├── chat_service.py # Chat business logic
│ │ ├── meeting_service.py # Meeting business logic
│ │ ├── redis_service.py # Redis interactions
│ │ └── user_service.py # User business logic
│ │
│ ├── templates/ # HTML templates (if any)
│ │
│ └── utils/ # Utility functions
│
├── main.py # Application entry point
├── requirements.txt # Dependencies
├── scripts/ # Utility scripts
└── tests/ # Test suite
- REST API: Comprehensive API for user and meeting management
- OpenAPI Documentation: Automatic API documentation
- Database Abstraction: Works with SQLite and PostgreSQL
- Redis Integration: Real-time functionality with Redis (or FakeRedis for development)
- Scheduler: Automatic meeting activation/deactivation
- Geospatial: Find nearby meetings functionality
- Real-time Chat: Meeting chat functionality
- FastAPI: Modern, fast web framework for building APIs
- Pydantic: Data validation and settings management
- SQLAlchemy: SQL toolkit and ORM
- Redis: In-memory data structure store
- APScheduler: Advanced Python scheduler
- GeoJSON: Geographical functionality
- Uvicorn: ASGI server
# Install dependencies
pip install -r requirements.txt
pip install -r backend/requirements.txt
- Note: Place your postgres credentials on
backend/app/core/config.py
redis-server
cd backend
python -m uvicorn app.main:app --reload
cd frontend
npm run serve
When the application is running, you can access the OpenAPI documentation at:
- Swagger UI: http://localhost:8000/docs
- ReDoc: http://localhost:8000/redoc
POST /api/users/
: Create a new userGET /api/users/{email}
: Get user detailsPUT /api/users/{email}
: Update user detailsDELETE /api/users/{email}
: Delete a user
POST /api/meetings/
: Create a new meetingGET /api/meetings/{meeting_id}
: Get meeting detailsGET /api/meetings/nearby
: Find nearby meetingsPUT /api/meetings/{meeting_id}
: Update meeting detailsDELETE /api/meetings/{meeting_id}
: Delete a meetingPOST /api/meetings/{meeting_id}/join
: Join a meetingPOST /api/meetings/{meeting_id}/leave
: Leave a meetingGET /api/meetings/{meeting_id}/participants
: Get meeting participantsPOST /api/meetings/{meeting_id}/end
: End a meeting
POST /api/chat/{meeting_id}
: Send a chat messageGET /api/chat/{meeting_id}
: Get chat messages for a meeting
The application can work with both SQLite (for development) and PostgreSQL (for production).
# Run tests
pytest