A modern, distraction-free writing editor built with React, TypeScript, and Supabase. WriteFlow provides a seamless writing experience with real-time collaboration, auto-save functionality, and cloud synchronization.
- Distraction-Free Writing: Clean, minimal interface focused on content creation
- Auto-Save: Never lose your work with automatic saving
- Cloud Sync: Access your documents from anywhere with cloud synchronization
- Mobile Responsive: Optimized experience across all devices
- Rich Text Editing: Powerful editor with formatting, tables, and media support
- Export Options: Export documents in multiple formats (DOCX, TXT)
- Document Search: Quickly find documents with powerful search functionality
- Organization: Star, archive, and tag your documents for better organization
- Dark Mode: Eye-friendly dark theme for extended writing sessions
- Writing Analytics: Word count, character count, and reading time tracking
- Node.js 16+
- npm or yarn
- Supabase account
-
Clone the repository
git clone https://github.com/yemisi567/writeflow.git cd writeflow -
Install dependencies
npm install # or yarn install -
Environment Setup
cp env.example .env.local
Update
.env.localwith your Supabase credentials:REACT_APP_SUPABASE_URL= REACT_APP_SUPABASE_ANON_KEY= REACT_APP_ENCRYPTION_KEY=
-
Database Setup
# Run the SQL script in your Supabase dashboard cat supabase-setup.sql -
Start development server
npm start # or yarn start -
Open your browser Navigate to
http://localhost:3000
- React 18 - UI library
- TypeScript - Type safety
- Tailwind CSS - Styling
- Framer Motion - Animations
- TipTap - Rich text editor
- React Router - Navigation
- React Hot Toast - Notifications
- Supabase - Backend as a Service
- PostgreSQL - Database
- Row Level Security (RLS) - Data security
- ESLint - Code linting
- Prettier - Code formatting
- Service Worker - Offline support
writeflow/
├── public/
│ ├── favicon.svg # App favicon
│ ├── manifest.json # PWA manifest
│ ├── sw.js # Service worker
│ └── robots.txt # SEO robots file
├── src/
│ ├── components/ # React components
│ │ ├── Editor/ # TipTap editor components
│ │ ├── Header/ # App header
│ │ ├── Sidebar/ # Document sidebar
│ │ ├── MobileSidebar/ # Mobile navigation
│ │ └── StatusBar/ # Bottom status bar
│ ├── config/ # Configuration files
│ ├── context/ # React context providers
│ ├── hooks/ # Custom React hooks
│ ├── lib/ # Utility libraries
│ └── utils/ # Helper functions
├── supabase-setup.sql # Database schema
└── package.json
REACT_APP_SUPABASE_URL=
REACT_APP_SUPABASE_ANON_KEY=
REACT_APP_ENCRYPTION_KEY=I welcome contributions.
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Commit changes:
git commit -m 'Add amazing feature' - Push to branch:
git push origin feature/amazing-feature - Open a Pull Request
- Use TypeScript for type safety
- Follow ESLint configuration
- Write meaningful commit messages
- Add tests for new features
- Update documentation as needed
This project is licensed under the MIT License - see the LICENSE file for details.
- TipTap - Rich text editor
- Supabase - Backend infrastructure
- Tailwind CSS - Styling framework
- Framer Motion - Animation library
- 📧 Email: alegbeyemi@gmail.com