Strangers today. Penpals tomorrow. Friends Forever.
Tegami is a digital penpal platform that brings back the lost art of letter writing in the modern age. Connect with people around the world through heartfelt letters, voice recordings, and personal journaling - all while building meaningful friendships that transcend borders.
- Browse Penpals: Discover potential friends from around the world
- Write Invitations: Craft personalized letters to connect with new people
- Real-time Messaging: Exchange letters with your penpals once connected
- Letter Status Tracking: See when your letters are in-transit, delivered, or read
- Record Audio: Capture voice memos and audio memories
- Cassette Wall: Browse and play your collection of audio recordings
- Audio Visualization: Beautiful visual feedback while recording and playing
- Personal Journaling: Write daily entries to track your thoughts and experiences
- Mood Tracking: Record your mood and emotional intensity
- Tag System: Organize entries with custom tags
- Private & Secure: Your journal entries are completely private
- Country Filtering: Connect with people from specific countries
- Age Range Matching: Find penpals in your preferred age group
- Writing Style Preferences: Match with people who share your communication style
- React 18 with TypeScript
- Vite for fast development and building
- React Router for client-side routing
- Tailwind CSS for styling with custom vintage theme
- Radix UI for accessible component primitives
- React Query for server state management
- Supabase for authentication and real-time features
- Node.js with Express.js
- TypeScript for type safety
- Supabase for database and storage
- Multer for file upload handling
- Helmet & CORS for security
- Morgan for request logging
- Supabase (PostgreSQL) for data persistence
- Supabase Storage for audio file management
- Real-time subscriptions for live updates
- Node.js (v18 or higher)
- npm or yarn
- Supabase account and project
-
Clone the repository
git clone https://github.com/username/tegami.git cd tegami -
Install dependencies
# Install frontend dependencies cd frontend npm install # Install backend dependencies cd ../backend npm install
-
Environment Setup
Create
.envfiles in both frontend and backend directories:Frontend (.env)
VITE_SUPABASE_URL=your_supabase_url VITE_SUPABASE_ANON_KEY=your_supabase_anon_key
Backend (.env)
SUPABASE_URL=your_supabase_url SUPABASE_SERVICE_ROLE_KEY=your_supabase_service_role_key PORT=3001
-
Database Setup
Set up your Supabase database with the required tables:
profiles- User profile informationletters- Public invitation letterspenpals- Penpal connectionspenpal_letters- Private messages between penpalsjournal_entries- Personal journal entriesaudio_memories- Voice recordings metadata
-
Start the development servers
Backend:
cd backend npm run devFrontend:
cd frontend npm run devThe frontend will be available at
http://localhost:5173and the backend athttp://localhost:3001.
tegami/
├── frontend/ # React frontend application
│ ├── src/
│ │ ├── components/ # Reusable UI components
│ │ ├── contexts/ # React contexts (Auth, etc.)
│ │ ├── lib/ # Utilities and API clients
│ │ └── pages/ # Page components
│ └── public/ # Static assets
├── backend/ # Express.js backend API
│ └── src/
│ ├── routes/ # API route handlers
│ ├── types/ # TypeScript type definitions
│ └── utils/ # Backend utilities
└── README.md
Tegami embraces a vintage, handwritten aesthetic that evokes the nostalgia of traditional letter writing:
- Vintage Typography: Custom fonts that mimic handwriting and vintage typewriters
- Paper Textures: Subtle background textures that simulate aged paper
- Ink Blots & Stamps: Decorative elements that add character
- Warm Color Palette: Ink blues and sepia tones for a timeless feel
Tegami uses Supabase Auth for secure user authentication:
- Email/password registration and login
- Google OAuth integration
- Secure session management
- Protected routes and API endpoints
GET /api/letters- Fetch public invitation lettersPOST /api/letters- Create a new invitation letterPUT /api/letters/:id- Update an existing letter
GET /api/penpals- Get user's penpal connectionsPOST /api/penpals/connect- Send a connection requestGET /api/penpals/letters- Fetch penpal correspondencePOST /api/penpals/letters- Send a letter to a penpal
GET /api/journal- Get user's journal entriesPOST /api/journal- Create a new journal entryPUT /api/journal/:id- Update a journal entryDELETE /api/journal/:id- Delete a journal entry
GET /api/audio- Get user's audio memoriesPOST /api/audio- Upload a new audio recordingDELETE /api/audio/:id- Delete an audio memory
We welcome contributions to Tegami! Please feel free to submit issues, feature requests, or pull requests.
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Inspired by the timeless art of letter writing
- Built with love for meaningful human connections
- Special thanks to the open-source community
Made with ❤️ for bringing people together, one letter at a time.