# Vibe Praying A full-stack web application built with FastAPI that creates random prayer partnerships. Each person is paired with two other people chosen randomly, and all results are persisted in a SQLite database. ## Features - **Random Pairing**: Each person is paired with exactly 2 other people randomly - **Persistent Storage**: All pairing sessions are saved to SQLite database - **Modern UI**: Clean, responsive design with smooth animations - **Session Management**: View and reload previous pairing sessions - **Real-time Feedback**: Loading states, success messages, and error handling - **Mobile Responsive**: Works perfectly on desktop and mobile devices ## Installation 1. **Clone or download the project files** 2. **Install dependencies**: ```bash pip install -r requirements.txt ``` 3. **Run the application**: ```bash python app.py ``` 4. **Open your browser** and navigate to: ``` http://localhost:8000 ``` ## Usage 1. **Enter Names**: Type or paste names into the text area, one name per line 2. **Session Name**: Optionally provide a name for your session 3. **Create Vibes**: Click the "Create Vibes" button to generate random partnerships 4. **View Results**: See all the prayer vibes displayed in a clean format 5. **Previous Sessions**: View and reload any previous pairing sessions ## API Endpoints - `GET /` - Main application page - `POST /create-pairs` - Create new pairing session - `GET /sessions` - Get all previous sessions - `GET /session/{session_id}` - Get specific session details ## Database Schema The application uses SQLite with two main tables: - **pairing_sessions**: Stores session metadata and pairing results - **pairs**: Individual pair records (currently unused but available for future features) ## Pairing Algorithm The pairing algorithm ensures that: - Each person is paired with exactly 2 other people - No duplicate pairs are created - Pairs are distributed as evenly as possible - Results are truly random ## Technology Stack - **Backend**: FastAPI, SQLAlchemy, SQLite - **Frontend**: HTML5, CSS3, Vanilla JavaScript - **Styling**: Custom CSS with modern design patterns - **Icons**: Font Awesome - **Fonts**: Inter (Google Fonts) ## Development To run in development mode with auto-reload: ```bash uvicorn app:app --reload --host 0.0.0.0 --port 8000 ``` ## File Structure ``` prayer-pairing/ ├── app.py # Main FastAPI application ├── requirements.txt # Python dependencies ├── README.md # This file ├── templates/ │ └── index.html # Main HTML template └── static/ ├── css/ │ └── style.css # Stylesheets └── js/ └── app.js # Frontend JavaScript ``` ## Features in Detail ### Random Vibe Logic - Takes a list of names as input - Creates vibes where each person is matched with 2 others - Avoids duplicate vibes and self-pairing - Handles edge cases (odd number of people, etc.) ### Persistent Storage - All sessions are automatically saved to SQLite database - Sessions survive app restarts and crashes - Previous sessions can be viewed and reloaded - Database file: `prayer_pairs.db` ### Modern UI/UX - Gradient background with modern card design - Smooth animations and hover effects - Loading states and success feedback - Error handling with user-friendly messages - Responsive design for all screen sizes - Keyboard shortcuts (Ctrl+Enter to create pairs) ### Session Management - View all previous pairing sessions - Click any session to reload and view its pairs - Session metadata (name, date, participants) - Easy navigation between sessions ## Browser Compatibility - Chrome/Chromium (recommended) - Firefox - Safari - Edge ## License This project is open source and available under the MIT License.