A real-time collaborative note-taking application built with React and Firebase, enabling simultaneous multi-user document editing and synchronization.
- Bi-directional linking - Bi-directional linking in linked list causes circular references ending in endless loops. This affects real-time collaboration features. See #33 for details and current status.
For a complete list of known issues, visit the issue tracker.
- Authentication - Email/password and Google OAuth integration
- Real-time Collaboration - Simultaneous multi-user editing with live synchronization
- Rich Text Editing - Full-featured editor with formatting capabilities
- Note Management - Personal and shared note organization
- Responsive Design - Mobile-first UI with theme support
- Auto-save - Automatic change detection and persistence
- React 18
- Tailwind CSS
- React Router
- React Quill
- React Toastify
- Firebase Authentication
- Cloud Firestore
- Firebase Hosting
- GitHub Actions
- Jest
- Node.js >= 16.x
- npm or yarn
- Firebase account
- Clone the repository
git clone https://github.com/yourusername/WebNote.git
cd WebNote- Install dependencies
cd client
npm install- Configure environment variables
Create client/.env:
REACT_APP_FIREBASE_API_KEY=your_api_key
REACT_APP_FIREBASE_AUTH_DOMAIN=your_auth_domain
REACT_APP_FIREBASE_PROJECT_ID=your_project_id
REACT_APP_FIREBASE_STORAGE_BUCKET=your_storage_bucket
REACT_APP_FIREBASE_MESSAGING_SENDER_ID=your_sender_id
REACT_APP_FIREBASE_APP_ID=your_app_id
REACT_APP_FIREBASE_MEASUREMENT_ID=your_measurement_id- Start development server
npm startApplication runs at http://localhost:3000
- Build for production
npm run build- Create a new project in Firebase Console
- Enable Authentication providers (Email/Password, Google)
- Create a Firestore database
- Configure security rules for data access control
- Retrieve web app configuration from Project Settings
- Add configuration values to
.envfile
Automatic deployment via GitHub Actions on push to main branch.
REACT_APP_FIREBASE_*- Firebase configuration valuesFIREBASE_SERVICE_ACCOUNT_*- Service account credentials
Pull requests trigger preview deployments automatically.
npm test- Environment variables for sensitive configuration
- Firebase Security Rules for data access control
- Authentication required for all features
- HTTPS-only communication
- Fork the repository
- Create a feature branch (
git checkout -b feature/feature-name) - Commit changes (
git commit -m 'Add feature description') - Push to branch (
git push origin feature/feature-name) - Submit a Pull Request
Licensed under the GNU General Public License v3.0. See LICENSE for details.