A beautiful, interactive digital diary application for preserving memories of important people in your life.
- Memory Pages: Create and manage pages for each important person in your life
- Editable Content: Click any field to edit names, relationships, birthdays, ages, and memories
- Image Upload: Upload photos for each person (supports JPEG, PNG, GIF, WebP up to 5MB)
- Face Recognition: Automatic face detection and recognition using uploaded images
- Memory Categories:
- Important Info: Key facts about the person
- Core Memories: Significant shared experiences
- Recent Memories: Latest interactions and updates
- Beautiful UI: Vintage diary aesthetic with smooth page-turning animations
- Data Persistence: All data is stored securely in Supabase
The application includes a robust image upload system:
- Navigate to any person's page (must be saved first)
- Click the "📷 Upload Photo" button below their image
- Select an image file from your device
- The image will be automatically uploaded and displayed
- JPEG (.jpg, .jpeg)
- PNG (.png)
- GIF (.gif)
- WebP (.webp)
- Maximum 5MB per image
- Images are stored in Supabase Storage
- Each person's image is named using their sanitized name
- Images are served via secure URLs
- Automatic validation ensures only image files are accepted
The application includes advanced face recognition capabilities:
- Image Storage: All uploaded images are stored in Supabase Storage
- Face Encoding: When images are uploaded, faces are automatically detected and encoded
- Real-time Recognition: The camera can recognize faces in real-time using the stored encodings
- Automatic Updates: Face recognition cache is automatically updated when new images are uploaded
GET /api/faces/status- Check current face recognition statusPOST /api/faces/reload- Manually reload faces from storageGET /api/faces/images- List all images in storagePOST /api/faces/clear-cache- Clear and rebuild face recognition cache
Run the test script to verify Supabase integration:
cd server
python test_supabase_faces.py- Node.js (v16 or higher)
- Python (v3.8 or higher)
- Supabase account and project
-
Navigate to the server directory:
cd server -
Create a virtual environment:
python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate
-
Install dependencies:
pip install -r requirements.txt
-
Create a
.envfile with your Supabase credentials:SUPABASE_URL=your_supabase_url SUPABASE_KEY=your_supabase_anon_key -
Start the backend server:
python main.py
-
Navigate to the client directory:
cd client -
Install dependencies:
npm install
-
Start the development server:
npm run dev
- Creating New Entries: Click the "New Entry" button to create a new person page
- Editing Content: Click any text field to edit it inline
- Saving Changes: Press Ctrl+Enter (or Cmd+Enter on Mac) to save, or click the ✅ button
- Uploading Images: Use the upload button below the person's photo
- Navigation: Use the page indicators or click the edges of the diary to navigate
- Deleting Entries: Use the delete button for saved entries
- Frontend: React, Vite, Tailwind CSS
- Backend: Flask, Python
- Database: Supabase (PostgreSQL)
- Storage: Supabase Storage
- Styling: Custom CSS with vintage diary aesthetic
GET /api/people- Fetch all peoplePOST /api/people- Create a new personPATCH /api/people/<name>- Update a person's informationDELETE /api/people/<name>- Delete a personPOST /api/upload-image/<name>- Upload an image for a personGET /api/faces/status- Get face recognition statusPOST /api/faces/reload- Manually reload faces from storageGET /api/faces/images- Get list of images in storagePOST /api/faces/clear-cache- Clear face recognition cache
Feel free to submit issues and enhancement requests!
This project is open source and available under the MIT License.