Aaron is a comprehensive language learning application designed to help users improve their skills through interactive reading, vocabulary practice, and grammar analysis. This repository contains the backend implementation of Aaron, developed using Node.js, Express.js, and MongoDB. The frontend, a work in progress, will be developed using modern web technologies to deliver a seamless and intuitive user experience.
- User registration and authentication.
- Track user goals, proficiency level, and progress.
- Supports sample and custom articles.
- Provides word-by-word translations.
- Grammar analysis for each article.
- Difficulty-level tagging (Beginner, Intermediate, Advanced).
- Tracks user interactions with words (e.g., encounters and checks).
- Allows users to mark words for review.
- Provides a word revision quiz based on tracked words.
- Drag-and-drop option for uploading custom articles.
- Audio support for pronunciation practice.
- Offline access to downloaded articles.
- Search history and article filtering by tags.
- Progress dashboard for tracking improvement.
- Automatic labelling of custom articles to optimise search. This is achieved by the implementation of the LDA algorithm.
- Redundant articles will be removed and only a single copy of the article will be saved using data deduplication algorithms.
- CLT based teaching techniques will be incorporated in later versions, after the MVP is built and deployed.
- Should develop new APIs for document tagging and integrate existing APIs to access French meanings instantly among others.
- Finish all server features by the end of this month
- Node.js
- Express.js
- MongoDB with Mongoose
- Postman
- React.js
- Redux for state management
- Tailwind CSS for responsive design
- Third-party translation and grammar analysis APIs.
-
Clone the repository:
git clone https://github.com/<your-username>/Aaron.git cd Aaron/aaron-backend
-
Install dependencies:
npm install
-
Create a
.env
file in the root directory and add the following:PORT=3000 MONGO_URI=mongodb://127.0.0.1:27017/aaronDB JWT_SECRET=your_jwt_secret
-
Start the server:
npm start
-
Test the API endpoints using Postman or curl.
- GET /api/users: Fetch all users
- POST /api/users: Create a new user
- PUT /api/users/:id: Update a user by ID
- DELETE /api/users/:id: Delete a user by ID
- GET /api/words: Fetch all words
- POST /api/words: Add a new word
- GET /api/words/:id: Fetch a word by ID
- PUT /api/words/:id: Update a word by ID
- DELETE /api/words/:id: Delete a word by ID
- GET /api/userwords/:userId: Fetch all user-word interactions for a user
- POST /api/userwords: Create or update a user-word interaction
- PATCH /api/userwords/:id: Update a specific user-word interaction
- DELETE /api/userwords/:id: Delete a specific user-word interaction
The frontend for Aaron is under development and will include:
-
User Interface:
- A clean and intuitive dashboard to track progress, goals, and interactions.
- A customizable reading interface with translation and grammar notes.
-
Responsive Design:
- Fully responsive to work on desktops, tablets, and mobile devices.
-
Interactive Features:
- Real-time word translations and grammar highlights.
- Integrated quizzes based on user interactions with words and articles.
-
Progress Tracking:
- A detailed progress dashboard to visualize improvements in vocabulary and reading skills.
-
Settings:
- Dark and light mode.
- User preferences for learning pace and difficulty levels.
-
Offline Mode:
- Save articles for offline access.
Aaron/
├── aaron-backend/
│ ├── index.js # Entry point for the backend
│ ├── models/ # Mongoose schemas for MongoDB collections
│ │ ├── userModel.js
│ │ ├── wordModel.js
│ │ ├── userWordModel.js
│ ├── routes/ # API route definitions
│ │ ├── userRoutes.js
│ │ ├── wordRoutes.js
│ │ ├── userWordRoutes.js
│ ├── .env # Environment variables
│ ├── package.json # Project dependencies
├── aaron-frontend/ # Placeholder for frontend code (to be added)
Contributions are welcome! If you’d like to contribute:
- Fork the repository.
- Create a new branch for your feature or bug fix.
- Submit a pull request with detailed changes.
This project is licensed under the MIT License. See the LICENSE
file for details.
For questions or suggestions, feel free to contact:
- Name: Venkata Narasimha Srikar Gade
- Email: [email protected]
- GitHub: https://github.com/srikargade1