Chaptered is an open-source, community-driven social reading platform designed for avid readers, book clubs, and anyone looking to turn reading from a solo habit into a shared experience.
This repository is part of ELUSoC 2026 (Extracurricular League of United Software Contributors).
Open Source • Community Driven • Built in Public
- Individual Readers who want to track their library, log reading sessions, and see insights on their reading streaks.
- Book Clubs & Reading Groups looking to coordinate reading lists, vote on books, and hold synchronized discussion threads.
- Active Communities wanting to discuss chapters and books in real time.
- Personal Reading Tracker: Track completion percentage, log pages read, upload book PDFs, and view reading stats.
- Social Book Clubs: Create and join public/private book clubs with invite-based membership.
- Real-Time Club Chats: Dynamic chat channels using Socket.io to talk about specific books and chapters.
- Collaborative Voting: In-club voting system to choose the group's next read.
- Reading Motivation: Streaks, milestones, and community accountability challenges.
| Layer | Technology |
|---|---|
| Frontend | React 19 + TypeScript + Vite |
| Styling | Tailwind CSS 4 |
| Routing | React Router 7 |
| State | Zustand (persisted to localStorage) |
| PDF Handling | pdf.js (page detection) + jsPDF (client-side compression) |
| Backend | Node.js + Express 5 + TypeScript |
| Database | MongoDB + Mongoose |
| Real-Time | Socket.io |
| Authentication | JWT (JSON Web Tokens) (planned) |
| Book Data | Google Books API (with mock fallback) |
chaptered/
├── chaptered-web/ # Frontend application (React + TS + Vite + Tailwind CSS 4)
│ ├── public/ # Static assets
│ ├── src/
│ │ ├── components/ # Reusable UI components (AddBookModal, Shelf, etc.)
│ │ ├── pages/ # Page views (Landing page, Library dashboard)
│ │ ├── store/ # Zustand state management
│ │ └── lib/ # Utility libraries (PDF parser, helpers)
│ └── package.json
│
├── chaptered-api/ # Backend application (Node.js + Express + TypeScript + Socket.io)
│ ├── src/
│ │ └── index.ts # Entry point containing REST endpoints & Socket.io server setup
│ └── package.json
│
├── CONTRIBUTING.md # Contribution guidelines & workflows (ELUSoC'26)
├── README.md # Project documentation
└── .gitignore # Root Git ignore configuration
Follow these steps to set up Chaptered on your local machine.
Before starting, ensure you have the following installed:
- Node.js (v18.x or higher)
- npm (v9.x or higher)
- MongoDB (running locally or a MongoDB Atlas connection string)
git clone https://github.com/vanshika114/Ch.aptered.git
cd Ch.apteredNavigate to the chaptered-api folder, install its dependencies, set up your local environment file, and start the development server:
cd chaptered-api
npm install
cp .env.example .env # Copy the template and fill in your values (like PORT, MONGODB_URI)
npm run dev # Starts the API server on http://localhost:3000In a new terminal window, navigate to the chaptered-web folder, install its dependencies, set up your local environment file, and start the Vite development server:
cd chaptered-web
npm install
cp .env.example .env # Copy the template (optional, defaults are pre-configured)
npm run dev # Starts the Vite dev server on http://localhost:5173Open http://localhost:5173 in your browser to view the application!
You can run automated tests for both the frontend and backend locally.
Frontend unit and component tests are built using Vitest and React Testing Library.
cd chaptered-web
npm run test # Run all tests once
npm run test:watch # Run tests in watch mode
npm run test:coverage # Generate a test coverage reportBackend API integration tests are built using Jest and Supertest.
cd chaptered-api
npm run test # Run backend test suiteWe welcome and appreciate all contributions! Whether you want to fix a bug, suggest features, improve documentation, or write tests.
💡 Please read our Contributing Guidelines first to understand the getting assigned flow, branch naming rules, and PR requirements.
- Wiring up MongoDB persistence (replacing localStorage)
- User authentication (JWT)
- Book Clubs + invite-based joining
- Real-time chat and presence (Socket.io)
- Club book voting
- Turning the mock/fallback search into a more robust book-data pipeline
- Database schema design for users, books, clubs, and sessions
- API contracts between
chaptered-webandchaptered-api - Migration plan from localStorage to a real backend
- Scalability planning
- Wireframes for Book Clubs and chat
- UI/UX refinements to the existing Library and Landing pages
- Design systems, branding ideas
- Improve documentation
- Write onboarding guides
- Suggest features
- Participate in discussions
This project is licensed under the MIT License. Feel free to use, modify, and distribute it.
Chaptered is an experiment in building an open-source product from the ground up with the community involved from day one. Every discussion, feature decision, pull request, and contribution helps write the next chapter.
Vanshika Sharma
Building Chaptered in public and always open to collaboration.