RECAPcha is a full-stack web app that helps students convert their notes into quizzes for more effective studying. Write or upload your notes, and Recapcha will intelligently create quiz questions to test your memory and reinforce learning.
- 📝 Save and manage plain text notes
- 🧠 Automatically generate quizzes based on notes
- 🔐 User authentication (Register / Login)
- 📎 Associate quizzes with their original notes
- ⏬ Download
.txtnotes or.jsonquizzes - 🧑💻 Built with MERN Stack (MongoDB, Express, React Native, Node.js)
Recapcha/
├── client/ # React Native frontend
│ ├── screens/ # App screens (Home, Login, Register, etc.)
│ ├── components/ # Shared UI components
│ ├── types/ # TypeScript types
│ └── ... # Additional client logic
├── server/ # Node.js + Express backend
│ ├── models/ # Mongoose models (User, Note, Quiz)
│ ├── routes/ # API endpoints
│ └── app.js # Server entry point
├── .env # Environment variables
└── README.md # Project documentation| Layer | Technology |
|---|---|
| Frontend | React Native (Expo) |
| Backend | Node.js + Express |
| Database | MongoDB + Mongoose |
| Auth | Custom Bearer Token |
| Language | TypeScript & JavaScript |
- Node.js (v18+ recommended)
- MongoDB (local or Atlas)
- Expo CLI:
npm install -g expo-cli
cd server
npm install
npm run devCreate a .env file inside the /server folder:
MONGO_URI=mongodb://localhost:27017/recapcha
PORT=5050cd client
npm install
npx expo start- Upon login, the user receives a simple token (user ID)
- This token is stored in
localStorageon the device - It is sent in the
Authorization: Bearer <token>header for all secured requests
POST /api/auth/register # Register new user
POST /api/auth/login # Login and get token
GET /api/auth/user/me # Get current logged-in user (via token)POST /api/notes # Create new note (requires token)POST /api/quizzes # Create new quiz associated with a note (requires token){
uuid: string;
txt: string;
createdAt: Date;
}{
q: string;
a: {
a1: boolean;
a2: boolean;
a3: boolean;
a4: boolean;
};
note: string; // references note UUID
user: string; // user UUID
createdAt: Date;
}- User creates a note → Stored in backend and linked to user
- User generates a quiz → Tied to the specific note
- Both are stored and retrievable per user
- Downloads available as
.txtand.json
- Notes and quizzes are embedded arrays in the User schema
- Quizzes reference notes via UUID (fastest for embedded schema)
- Authentication is simplified with user ID tokens
This project is licensed under the MIT License