HERE is an event management and attendance tracking platform designed to streamline in-person event operations with geofenced check-ins, host tools, and real-time attendee engagement.
This repository contains a full-stack application for creating, discovering, and managing events:
- A React Native and Expo mobile app for attendees and hosts
- A FastAPI backend for authentication, event management, chat, and notifications
- PostgreSQL for persistent data
- Redis for OTP/session-style support and caching
- Docker support for local development
- Lets hosts create and manage physical events with location-based metadata
- Supports attendee RSVP, check-in, and attendance validation using geofencing
- Provides authentication with email OTP verification and JWT-based access
- Includes event chat and notification flows
- Supports a mobile-first experience for onboarding, event browsing, and profile management
- User authentication and account verification
- Host and attendee roles with scoped access
- Physical event creation, update, listing, and cancellation
- Geofence-based check-in validation and attendance tracking
- Event chat with real-time WebSocket support
- Notifications for users
- Mobile UI built with Expo Router
- React Native
- Expo
- Expo Router
- TypeScript
- React Query
- Zustand
- React Navigation
- Python
- FastAPI
- SQLAlchemy with async support
- Pydantic and Pydantic Settings
- PostgreSQL
- Redis
- JWT and OTP-based auth
- frontend/: Expo application and mobile UI
- backend/: FastAPI service, SQLAlchemy models, routers, services, and tests
- backend/app/: API entrypoint, config, database setup, routers, services, schemas, and utilities
- backend/tests/: backend tests
Before running the project locally, make sure you have:
- Python 3.10+
- Node.js 18+
- npm or yarn
- Docker and Docker Compose (optional, but recommended)
- PostgreSQL and Redis running locally, or use Docker Compose
The backend reads configuration from a .env file in the backend directory.
Example:
SECRET_KEY=change-me
HASH_ROUNDS=12
REDIS_URL=redis://localhost:6379/0
SMTP_HOST=smtp.example.com
SMTP_PORT=587
SMTP_USERNAME=your-user
SMTP_PASSWORD=your-password
SMTP_FROM_EMAIL=no-reply@example.com
DATABASE_URL=postgresql+asyncpg://postgres:postgres@localhost:5432/here
DEBUG=true
OTP_PREFIX=otp:
OTP_EXPIRY_SECONDS=300
VERIFICATION_TOKEN_EXPIRY_SECONDS=600
JWT_EXPIRY_SECONDS=86400
BLACKLIST_TOKEN_PREFIX=blacklist:From the backend directory:
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
uvicorn app.main:app --reloadThe API will be available at:
- http://localhost:8000
- Swagger docs: http://localhost:8000/docs
From the frontend directory:
npm install
npm startThen launch the Expo app on your device or emulator.
From the backend directory:
docker compose up --buildThis starts:
- the FastAPI app on port 8000
- PostgreSQL on port 5433
- Redis on port 6379
Backend tests:
cd backend
pytestThe backend exposes routes for:
- authentication and account verification
- event creation and management
- RSVP and attendance flows
- chat and notifications
The current backend implementation is structured around modular routers and services, with the main application entry point in backend/app/main.py and the mobile client rooted in frontend/.