SWEET (SWE Education Tool) is an open-source exam preparation tool designed to help individuals practice and improve their skills by conducting various types of tests such as multiple-choice questions (MCQs), essays, coding problems, and take-home assignments. It's ideal for self-study, skill assessment, and targeted practice.
- Question Types Supported:
- MCQ (Multiple Choice Questions)
- Essay Questions
- Coding Problems (with built-in code editor and test case validation)
- Take-Home Assignments (via ZIP uploads)
- Short Answer Questions
- Difficulty Levels:
- Easy, Medium, and Hard, tagged per question.
- Question Management:
- Import questions via JSON files.
- Tracks topics and progress.
- Coding Test Execution:
- Integrated coding editor powered by Monaco Editor.
- Docker support for running code safely and securely with test cases.
- User Profiles:
- Create, save, and manage user profiles.
- Track individual progress and results.
Whether you're preparing for coding interviews, learning new concepts, or conducting practice tests, SWEET provides a customizable, lightweight, and powerful tool to achieve your learning goals.
- Frontend: React
- Backend: Node.js (Electron)
- Code Execution: Docker for sandboxing
- Storage: SQLite for local database management
- UI Editor: Monaco Editor for coding problems
Ensure you have the following installed on your system:
-
Clone the repository:
git clone https://github.com/AnupamaCodippily/SWEET.git cd SWEET -
Install dependencies:
npm install
-
Start the app in development mode:
npm start
-
Package the app for distribution:
npm run package
- Open the app and create a user profile.
- Import question sets via JSON files.
- Select a test type (e.g., MCQ, Essay, Coding Problem).
- For coding tests, write and test code using the built-in editor.
- View results and track progress.
Here is an example JSON file for importing MCQs:
[
{
"topics": ["Java", "Streams API"],
"statement": "What does the 'reduce' operation in Java Streams do?",
"options": [
"Combines all elements of the stream into a single result",
"Filters elements of the stream",
"Transforms each element into another type",
"Splits the stream into multiple smaller streams"
],
"answer": [0],
"difficulty": 2
}
]We welcome contributions from the community to enhance SWEET! Here's how you can help:
-
Fork the repository.
-
Create a new branch for your feature or bug fix:
git checkout -b feature/my-awesome-feature
-
Commit your changes:
git commit -m "Add my awesome feature" -
Push your branch to GitHub:
git push origin feature/my-awesome-feature
-
Submit a pull request.
For detailed guidelines, refer to our CONTRIBUTING.md.
This project is licensed under the MIT License. See the LICENSE file for details.
- MVP stuff (basic functionality)
- Timer support for timed exams.
- Cloud-based question sharing and syncing.
- Support for additional coding languages.
- Advanced analytics and progress visualization.
If you have questions or feedback, feel free to reach out:
- GitHub Issues: https://github.com/AnupamaCodippily/SWEET/issues