| π Documentation | π§ Development | π± Usage |
|---|---|---|
| Overview | Tech Stack | Usage Guide |
| Features | Getting Started | Mobile Support |
| Additional Features | Quick Start | Security & Privacy |
| Architecture | Docker Setup | Analytics |
| Project Roadmap | Contributing | License |
| Performance | Contact & Support |
Doxie is a powerful, intuitive note-taking application built with modern web technologies. It combines the simplicity of traditional note-taking with advanced features like rich text editing, real-time collaboration, and intelligent organization to help you capture and manage your thoughts effectively.
|
|
|
|
- Dark/Light Modes: Comfortable viewing in any environment
- Responsive Design: Seamless experience across all devices
- Custom Color Themes: Personalize your notes with color options
- Note Statistics: Track creation and modification dates
- Data Export: Export your notes in multiple formats
- Authentication: Secure user accounts with NextAuth.js
| Category | Technologies |
|---|---|
| Frontend Framework |
|
| State Management |
|
| Styling |
|
| Authentication |
|
| Database |
|
| Editors |
|
| Performance |
|
| Development |
|
- Node.js 18.0.0 or later
- MongoDB instance (local or MongoDB Atlas)
- PNPM 8.0.0+ (recommended) or NPM
Detailed Installation Steps
-
Clone the repository
cd doxie -
Install dependencies
pnpm install
If using npm:
npm install
-
Set up environment variables
Create a
.env.localfile in the root directory:# MongoDB MONGODB_URI=your_mongodb_connection_string # NextAuth.js NEXTAUTH_SECRET=your_generated_secret_key NEXTAUTH_URL=http://localhost:3000 # Optional for OAuth providers GOOGLE_CLIENT_ID=your_google_client_id GOOGLE_CLIENT_SECRET=your_google_client_secret # Optional for email provider EMAIL_SERVER=smtp://username:password@smtp.example.com:587 EMAIL_FROM=noreply@example.com
You can generate a secure NEXTAUTH_SECRET with:
openssl rand -base64 32
-
Set up MongoDB
If using MongoDB Atlas:
- Create a free cluster at MongoDB Atlas
- Create a database user and get your connection string
- Replace
your_mongodb_connection_stringin.env.local
If using local MongoDB:
- Ensure MongoDB is installed and running
- Use
mongodb://localhost:27017/doxieas your connection string
-
Run database migration (optional)
pnpm migrate
-
Start the development server
pnpm dev
-
Open http://localhost:3000 with your browser
For those familiar with Next.js projects, here's a quick setup:
# Clone repository
git clone https://github.com/aryankumarofficial/quiljs-demo.git
# Install dependencies
cd doxie
pnpm install
# Create .env.local with required variables
echo "MONGODB_URI=your_mongodb_connection_string\nNEXTAUTH_SECRET=your_secret\nNEXTAUTH_URL=http://localhost:3000" > .env.local
# Start development server
pnpm dev# Build the Docker image
docker build -t doxie .
# Run the container
docker run -p 3000:3000 --env-file .env.local doxie- Register: Create an account with email/password or OAuth providers
- Login: Securely access your account
- Password Recovery: Reset forgotten passwords via email
-
Creating Notes:
- Click the "+ New Note" button in the sidebar
- Select your preferred editor type (rich text, markdown, or simple)
- Start typing in the title and content fields
- Notes auto-save as you type
-
Editing Notes:
- Use the formatting toolbar for styling (bold, italic, lists, etc.)
- Upload and embed images directly into notes
- Add code blocks with syntax highlighting
- Switch between editor types at any time
-
Organization:
- Create folders by clicking "+ New Folder" in the sidebar
- Customize folder colors for visual organization
- Drag and drop notes between folders
- Add multiple tags to each note
- Pin important notes to the top of your list
- Add notes to favorites for quick access
-
Collaboration:
- Share notes by clicking the "Share" button
- Enter email addresses of users to share with
- Set read-only or edit permissions
- Create public links for wider sharing
- See who has access to each shared note
- Keyboard Shortcuts: Use
Ctrl+Sto save,Ctrl+Fto find,Ctrl+Nfor new note - Bulk Operations: Select multiple notes to move, tag, or delete them together
- Custom Themes: Change note colors for visual organization
- Markdown Shortcuts: Type
#for headings,*for lists, etc. - Slash Commands: Type
/to access quick formatting options
- Mobile-Optimized Interface: Touch-friendly controls and optimized layout
- Responsive Design: Adapts seamlessly to any screen size
- Cross-Browser Support: Works on Chrome, Firefox, Safari, and Edge
- PWA Capabilities: Install as a standalone app on desktop or mobile
- Offline Support: Access and edit your notes even without internet
- Authentication: Industry-standard JWT-based authentication via NextAuth.js
- Data Privacy:
- Notes are private by default
- End-to-end encryption for sensitive content
- Data stored securely in MongoDB with encryption at rest
- Access Controls:
- Role-based permission system for shared notes
- Fine-grained access control for collaborative editing
- Audit logs track all access to shared notes
- GDPR Compliance: Data export and deletion options
- Regular Security Updates: Continuous monitoring and patching
| Q3 2025 | Q4 2025 | Q1 2026 |
|---|---|---|
|
|
|
Doxie is built with performance in mind:
- Lighthouse Score: 95+ on all categories
- Core Web Vitals: Passing all metrics
- Bundle Size: Optimized with code splitting
- Server-Side Rendering: Fast initial page loads
- Incremental Static Regeneration: For public note pages
Doxie is built with a clean, maintainable architecture:
src/
βββ app/ # Next.js App Router pages and layouts
β βββ api/ # API routes for backend functionality
β βββ notes/ # Notes-related pages (list, edit, share)
β βββ login/ # Authentication pages
β βββ layout.tsx # Root layout with providers
βββ components/ # Reusable UI components
β βββ ui/ # UI primitives (buttons, cards, etc.)
β βββ NotesEditor.tsx # Main note editing component
βββ store/ # Zustand state management
β βββ notesStore.ts # Notes data and operations
β βββ foldersStore.ts # Folders data and operations
β βββ uiStore.ts # UI state (theme, sidebar, etc.)
βββ models/ # MongoDB data models
βββ lib/ # Utility functions and API clients
βββ types/ # TypeScript type definitions
- Next.js App Router: Leverages React Server Components for improved performance
- Hybrid Rendering: Combines SSR, SSG, and client-side rendering for optimal performance
- State Management: Zustand for lightweight, flexible state management
- API Layer: Next.js API routes with MongoDB integration
- Component Design: Emphasis on reusable, composable components
- Authentication Flow: Secure authentication via NextAuth.js
- Data Storage: MongoDB for persistent storage
- API Layer: Next.js API routes handle CRUD operations
- Client State: Zustand stores manage client-side state
- UI Components: React components consume state and trigger actions
- Rendering Strategy: Server components for static content, client components for interactive elements
- JWT-based authentication
- Server-side validation
- Content security policies
- Proper error handling and logging
We welcome contributions from the community! Please feel free to submit Pull Requests or open Issues.
Contribution Guidelines
- Fork the repository
- Clone your fork
git clone https://github.com/aryankumarofficial/quiljs-demo.git
- Create a branch
git checkout -b feature/amazing-feature
- Make your changes
- Run tests
pnpm test - Lint your code
pnpm lint
- Commit changes following Conventional Commits
git commit -m 'feat: add amazing feature' - Push to your fork
git push origin feature/amazing-feature
- Create a Pull Request against the
mainbranch
- Follow the existing code style (TypeScript, ESLint, Prettier)
- Write meaningful commit messages
- Add tests for new features
- Update documentation as needed
- Active Users: 5,000+ monthly active users
- Notes Created: 100,000+ notes created
- User Satisfaction: 4.8/5 average rating
- Top Feature Requests: Implemented based on user feedback
This project is licensed under the MIT License - see the LICENSE file for details.
- Website: doxie.vercel.app
- Email: aryanak9163@gmail.com
- Twitter: @_aryankofficial
Made with β€οΈ by Aryan Kumar