Organize. Collaborate. Learn. All in one place.
β’ Features β’ Tech Stack β’ Documentation
SyncScript is a modern, full-stack web application designed for individuals and teams to create, organize, and collaborate on knowledge vaults. Whether you're a student managing study materials, a researcher organizing citations, or a team documenting project resources, SyncScript provides an intuitive platform to centralize your learning resources with collaborative features.
Users can create personal vaults, add resources (links and files), annotate with rich text, and securely share vaults with team members through role-based access control. The system features email-based invitations, comprehensive permission management, and a responsive design that works seamlessly across all devices.
- π¦ Create unlimited personal knowledge vaults
- π Organize resources by topic, subject, or project
- π·οΈ Add descriptive names and detailed descriptions to vaults
- π View vault statistics (resource count, creation date)
- π Add links/URLs with titles and descriptions
- π Upload and manage files within vaults
- π― Quick access with organized resource lists
- π Easy navigation to view resource details
- βοΈ Create detailed annotations using TinyMCE rich text editor
- π¨ Format text with bold, italic, lists, links, and more
- π₯ Multiple users can annotate the same resource
- β° Track annotation timestamps and authors
- π€ Share vaults with team members via email invitations
- π Role-based access control (Owner, Contributor, Viewer)
- π§ Email-based invitation system with secure tokens
- βοΈ Granular permission management
- Owner: Full control over vault and members
- Contributor: Add resources and annotations, edit own content
- Viewer: Read-only access to resources and annotations
- π Secure JWT-based authentication
- π Password hashing with bcryptjs
- πΎ Session persistence across browser sessions
- π Auto-login functionality
- π± Mobile-first responsive layout
- π» Works seamlessly on desktop, tablet, and mobile
- β‘ Fast loading with optimized assets
- π― Intuitive user interface
- React 18 - UI component framework
- Vite - Lightning-fast build tool
- TailwindCSS - Utility-first CSS framework
- React Router v6 - Client-side routing
- Axios - HTTP client for API communication
- TinyMCE - Rich text editor for annotations
- Lucide React - Icon library
- Node.js + Express.js - Server runtime and web framework
- MongoDB + Mongoose - NoSQL database and ODM
- JWT - Stateless authentication
- bcryptjs - Password hashing
- Nodemailer - Email service for invitations
- CORS - Cross-origin resource sharing
- Express Middleware - Logging, error handling, validation
- Frontend: Vercel (serverless)
- Backend: Railway/Render (container deployment)
- Database: MongoDB Atlas (cloud)
SyncScript/
βββ frontend/ # React frontend application
β βββ src/
β β βββ components/ # Reusable React components
β β β βββ VaultCard.jsx
β β β βββ CreateVaultModal.jsx
β β β βββ InviteMemberForm.jsx
β β β βββ ResourceForm.jsx
β β βββ pages/ # Page components
β β β βββ LandingPage.jsx
β β β βββ SignupPage.jsx
β β β βββ LoginPage.jsx
β β β βββ DashboardPage.jsx
β β β βββ VaultDetailPage.jsx
β β β βββ AcceptInvitationPage.jsx
β β βββ api/ # API integration
β β β βββ axios.js
β β βββ App.jsx # Main app component with routing
β β βββ main.jsx # React entry point
β βββ package.json
β βββ vite.config.js
β
βββ backend/ # Node.js backend application
β βββ src/
β β βββ controllers/ # Business logic
β β β βββ authController.js
β β β βββ vaultController.js
β β β βββ resourceController.js
β β β βββ annotationController.js
β β βββ models/ # MongoDB schemas
β β β βββ User.js
β β β βββ Vault.js
β β β βββ Resource.js
β β β βββ Annotation.js
β β β βββ VaultMember.js
β β β βββ Invitation.js
β β βββ routes/ # API endpoints
β β β βββ auth.routes.js
β β β βββ vault.routes.js
β β β βββ resource.routes.js
β β β βββ annotation.routes.js
β β βββ middleware/ # Custom middleware
β β β βββ authMiddleware.js
β β β βββ errorHandler.js
β β β βββ validation.js
β β βββ utils/ # Utility functions
β β β βββ emailService.js
β β β βββ storage.js
β β βββ index.js # Server entry point
β βββ .env.example
β βββ package.json
β βββ README.md
β
βββ docs/ # Project documentation
βββ DATABASE.md # Database schema
βββ API.md # API documentation
βββ DEPLOYMENT.md # Deployment guide
- Node.js 18+
- npm or yarn
- MongoDB connection string (MongoDB Atlas)
- Gmail account for email service (or alternative)
POST /api/v1/users/register - User registration
POST /api/v1/users/login - User login
POST /api/v1/users/logout - User logout
POST /api/v1/users/refresh-token - Refresh JWT token
GET /api/v1/users/me - Get current user
POST /api/v1/vaults - Create vault
GET /api/v1/vaults - Get all user vaults
GET /api/v1/vaults/:id - Get single vault
PUT /api/v1/vaults/:id - Update vault
DELETE /api/v1/vaults/:id - Delete vault
POST /api/v1/vaults/:id/resources - Add resource
GET /api/v1/vaults/:id/resources - Get vault resources
PUT /api/v1/resources/:id - Update resource
DELETE /api/v1/resources/:id - Delete resource
POST /api/v1/resources/:id/annotations - Add annotation
GET /api/v1/resources/:id/annotations - Get annotations
PUT /api/v1/annotations/:id - Update annotation
DELETE /api/v1/annotations/:id - Delete annotation
POST /api/v1/vaults/:id/invite - Send vault invitation
POST /api/v1/invitations/:token/accept - Accept invitation
GET /api/v1/vaults/:id/members - Get vault members
DELETE /api/v1/vaults/:id/members/:id - Remove member
- β JWT Authentication - Stateless, scalable auth
- β Password Hashing - bcryptjs with salt rounds
- β CORS Protection - Restricted cross-origin requests
- β Role-Based Access Control - Granular permissions
- β Email Verification - Token-based invitations
- β HTTPS Only - Encrypted data in transit
- β Environment Variables - No hardcoded secrets
- β Rate Limiting - Prevent brute force/abuse
- β Input Validation - Server-side validation
- β Error Handling - Secure error messages
SyncScript uses a normalized MongoDB schema with 7 collections:
- Users - User accounts and credentials
- Vaults - Knowledge vaults created by users
- Resources - Links and files within vaults
- Annotations - Rich text notes on resources
- VaultMembers - User-vault relationships with roles
- Invitations - Pending/accepted vault sharing invitations
- Files - Uploaded file metadata
This project was developed as part of the Software Construction and Development course at NED University of Engineering and Technology. Special thanks to:
- Course instructors for guidance
- Classmates for feedback and testing
- Open source communities for amazing tools and libraries
- Lines of Code: ~2,500 (frontend) + ~3,000 (backend)
- Components: 8 (frontend)
- API Endpoints: 25+
- Database Collections: 7
- Test Cases: 33+
- Documentation Pages: 5
- Development Time: ~8 weeks
- Deployment Platforms: 3 (Vercel, Railway, MongoDB Atlas)
By exploring SyncScript, you'll learn:
- Full-stack web development with React + Node.js
- Database design and normalization (1NF to BCNF)
- RESTful API design and implementation
- Authentication and authorization patterns
- Cloud deployment and DevOps basics
- Real-time email-based collaboration
- Role-based access control implementation
- Production-ready code practices
- Git workflow and version control
- Responsive mobile-first design
| Priority | Feature | Target | Status |
|---|---|---|---|
| High | Search & Filter | v1.1 | π In Progress |
| High | Dark Mode | v1.1 | π Planned |
| Medium | Tags/Categories | v1.2 | π Planned |
| Medium | Activity Logs | v1.2 | π Planned |
| Low | Mobile App | v2.0 | π― Future |
| Low | Real-time Sync | v2.0 | π― Future |
Feel free to open an issue or reach out directly. Happy learning! π