A premium, state-of-the-art Single Page Application (SPA) designed to manage contact lists seamlessly. It features a highly aesthetic, responsive, glassmorphic dark/light UI and is backed by a high-performance Python (FastAPI) server and an SQLite database.
- Gorgeous Glassmorphism UI: High-end styling using a customized HSL palette with a smooth light/dark toggle.
- Dynamic Seeding: Automatically initializes a set of default premium contacts upon initial database startup.
- Instant Search & Filter: Real-time debounced searches and categorization (Favorites, Personal, Work) to keep contact navigation fluid.
- Consistent Colorful Avatars: Uniquely hashes the name of each contact to generate a beautiful, unique, and permanent profile picture color.
- Robust REST API: Powerful backend CRUD routes designed using FastAPI and Pydantic validators.
contact_directory/
├── database.py # Handles connection, table creation, and SQLite logic
├── main.py # FastAPI server, endpoints, and static folder setup
├── requirements.txt # Project Python dependencies
├── static/
│ ├── index.html # Translucent visual dashboard structure
│ ├── style.css # Premium layout variables, animations, and typography
│ └── app.js # Responsive UI interactions, state storage, and AJAX CRUD
└── README.md # Instructions and features summary
Ensure that you have Python 3.8+ installed on your system.
Activate your terminal, move to the project directory, install the required packages:
# Navigate to the workspace (if you haven't yet)
cd contact_directory
# Install dependencies (requires internet access)
pip install -r requirements.txtLaunch the FastAPI development server:
python -m uvicorn main:app --reloadOnce running, open your web browser and navigate to: 👉 http://127.0.0.1:8000
- Full Name: Required field, min 1 character, max 100 characters.
- Email: Optional. If provided, basic format checks are automatically executed on both client and server sides.
- Phone: Optional. Max 30 characters.
- Company: Optional. Max 100 characters.
- Category: Can be selected from Personal 🏠, Work 💼, or Favorites ⭐.
- Notes: Optional. Max 500 characters.