Memoirly is a feature-rich web application that helps you preserve and share your experiences. With powerful media management, timeline organization, and beautiful UI, it's the perfect companion for documenting your life's moments.
Built with the tools and technologies:
Demo_video.webm
- Photo and video upload with drag-and-drop support
- Automatic media organization by date
- Smart album creation and management
- Batch upload and processing
- Media preview and quick editing
- Create beautiful video reels from your clips
- Custom transitions and effects
- Background music integration
- Video trimming and editing
- Export in multiple formats
- Intelligent photo tagging using TensorFlow
- Automatic content tagging and categorization (Coming soon)
- Smart search and filtering (Coming soon)
- Face recognition and grouping (Coming soon)
- Scene and object detection (Coming soon)
- Responsive design for all devices
- Smooth animations with Framer Motion
- Intuitive navigation
- Protected routes for authenticated users
- Public sharing capabilities
- Secure authentication with Clerk
- Private and public sharing options
- Protected routes for authenticated content
- Secure media storage
- Cloud storage with Supabase
- Automatic backup and sync
- Cross-device access
- Version history
- Data export options
- Framework: React + JavaScript
- Build Tool: Vite
- Styling: Tailwind CSS
- Routing: React Router v7
- Authentication: Clerk
- AI/ML: TensorFlow.js
- UI Components:
- Framer Motion for animations
- Custom UI components
- Responsive layouts
- Authentication: Clerk
- Database: Supabase
- Media Storage: Cloudinary
- AI Processing: TensorFlow.js
Our Supabase database is designed to efficiently store and manage user data, media, and relationships. Here's a visual representation of our database schema:
- media: Stores all uploaded media (photos, videos) and associated metadata (caption, emotion, tags, location, etc.).
- albums: Manages collections of media, including title, description, and cover image.
- album_media: Join table linking media to albums, with a timestamp for when media was added to an album.
- edits: Stores information about edits made to media, including type, title, URL, and timestamps.
- journal_entries: Contains user journal entries, organized by month, with content and timestamps.
src/
βββ api/ # API integration (Supabase, Cloudinary, Clerk, etc.)
βββ components/ # Reusable UI components
β βββ auth/ # Authentication (login, signup, etc.)
β βββ edits/ # Video and media editing components
β βββ gallery/ # Media gallery and display components
β βββ layout/ # Layout and navigation components
β βββ search/ # Search and filtering components
β βββ upload/ # File/media upload components
βββ pages/ # Application pages
β βββ HomePage/ # Landing page
β βββ Dashboard/ # User dashboard
β βββ MemoryDetail/ # Single memory/media detail
β βββ AlbumPage/ # Album view and management
β βββ TimelinePage/ # Timeline of memories
β βββ MemoryReelPage/ # Video reel creation
β βββ ... # Other pages
βββ lib/ # Utility functions, hooks, and helpers
βββ App.jsx # Main application component
βββ main.jsx # Application entry point
- Node.js (v18 or higher)
- npm or yarn
- Supabase account
- Cloudinary account
- Clerk account
-
Clone the repository:
git clone https://github.com/Jonniie/Memoirly.git cd Memoirly -
Install dependencies:
npm install
-
Create a
.envfile in the root directory with your API keys:VITE_SUPABASE_URL=your_supabase_url VITE_SUPABASE_ANON_KEY=your_supabase_key VITE_CLOUDINARY_CLOUD_NAME=your_cloudinary_name VITE_CLOUDINARY_UPLOAD=your_cloudinary_preset_value VITE_CLERK_PUBLISHABLE_KEY=your_clerk_key
- Go to Supabase and create a new project
- Once your project is created, go to Project Settings > API
- Copy the "Project URL" for
VITE_SUPABASE_URL - Copy the "anon public" key for
VITE_SUPABASE_ANON_KEY
- Sign up for a Cloudinary account
- Go to your Dashboard
- Copy your "Cloud name" for
VITE_CLOUDINARY_CLOUD_NAMEand Cloud Preset Value forVITE_CLOUDINARY_UPLOAD
- Create an account at Clerk
- Create a new application
- Go to API Keys in your dashboard
- Copy the "Publishable Key" for
VITE_CLERK_PUBLISHABLE_KEY
| test@gmail.com | |
|---|---|
| Password | -test123@gmail.com |
π‘ Use these credentials to test the app on the go
- Start the development server:
npm run dev
npm run dev- Start development servernpm run build- Build for productionnpm run preview- Preview production build
- AI-powered photo organization
- Advanced video editing capabilities
- Social sharing integration
- Mobile app companion
- Offline mode support
- Advanced analytics
- Custom themes and templates
- Collaborative albums
This project is licensed under the MIT License - see the LICENSE file for details.
- Clerk for authentication
- Supabase for database services
- Cloudinary for media management
- The open-source community for various tools and libraries








