SyntaxBase is a full-stack web application designed to help users learn programming and build real-world applications from the ground up. Built with React, Spring Boot, and PostgreSQL, the platform provides a structured, self-paced learning experience across multiple domains of software development.
SyntaxBase offers a wide range of tutorials, exercises, and interactive content organized into five core sections:
- Web Development
- Game Development
- Database Management
- Problem Solving
- Instructions & Lectures
Each section is divided into three tiers—Beginner, Intermediate, and Advanced—allowing users to progress based on their skill level and experience.
SyntaxBase includes an integrated community forum where users can:
- Share ideas and projects
- threaded forum with sections
- ability to modify own message
- Give and receive feedback
- feedback from instructors or other developers
- Connect with other developers and tech enthusiasts
Some core features in SyntaxBase include:
- User registration & authentication
- Exploring tutorials and courses
- Getting help & consultation via email
- Personal homepage with options to view courses/tutorials
- Rate course/tutorial
- Check progress per course/tutorial
- Authenticated users can enroll courses
- Courses provide more features than tutorials
- more examples
- more lessons
- friendly feedback after every lesson
- in-lesson code demonstration and ability to customize code in browser
- final project after finishing lessons with step-by-step guide
- quiz after project to confirm knowledge
- Authenticated users have access to community forum
- Authenticated users can post, reply and delete posts in forum
- Authenticated users are notified when somebody replies to their post
- Authenticated users can change personal information
- Authenticated users can apply for instructor role
- After their request is approved they will receive email with confirmation
- Ability to enroll course via shared link from instructor
- Authenticated users can mark notifications as read
- Authenticated users can report messages
- Users can receive email containing unread notifications
- Authenticated users can view earned certificates
- Authenticated users can view earned awards
- Authenticated users can chat with each other in real time via integrated chat
The admin dashboard provides full control over user lifecycle, course analytics, and forum moderation tools.
- Approve instructor role requests
- Activate / deactivate user accounts
- Delete user accounts
- View user details and status
- Remove user from enrolled courses
- Soft-delete and restore user messages
- Monitor top-rated courses by average rating
- Track course completion rates
- Delete inappropriate or flagged messages
- Restrict users from participating in discussions
Instructors are verified users granted elevated privileges to create and manage their own courses.
- Create and publish new courses
- Delete owned courses
- Edit and update existing courses
- Upgrade course tier from FREE to ULTIMATE
- Share enrollment links via email
- Hold elevated Instructor role in forum discussions
This module enables structured, role-based community interaction through a lightweight forum system.
-
Section-Based Posting
Users can create posts in up to five predefined sections, promoting organized discussions and content categorization. -
Post Structure
Each post includes:- Message body
- User name and role
- Timestamp of creation
-
Author Permissions
Post creators can edit or delete their own posts at any time. -
Replies & Moderation
- All posts support threaded replies
- Reply authors can modify, delete, or report replies
- Reporting enables community-driven moderation workflows
-
Sorting Options
Posts can be sorted by:- Date – for chronological relevance
- Thread/Section – to maintain contextual clarity
Before you begin, ensure you have the following installed on your machine:
- Node.js (v18+ recommended)
- npm or Yarn (npm comes with Node.js)
- A modern web browser (e.g., Chrome, Firefox)
- Java JDK 17+
- Maven (or Gradle, if your project uses it)
- Spring Boot (handled via Maven/Gradle)
- PostgreSQL (v14+ recommended)
- Ensure a local or remote instance is running
- Create a database and user with the proper privileges
- Docker (to run PostgreSQL easily)
- Postman for testing APIs
- pgAdmin or another PostgreSQL client for database management
Since this is side project .env files must be manually configrued. Make sure to configure the following:
.envfile for frontend (e.g., API base URL)application.propertiesorapplication.ymlfor Spring Boot (DB URL, credentials, etc.)
For development environment VSCode and/or IntelijIDEA is recommended.
- Clone or download project
- Open project inside desired development environment
The recommended integrated development environment (IDE) for this project is IntelliJ IDEA.
- Clone or download the repository from your version control system.
- Open IntelliJ IDEA and navigate to:
File → New → Project from Version Control... - Paste the repository URL and select
"Load Maven build script" to import the project properly.
Cloning the repository
Importing the project using Maven
To launch the frontend application, follow these steps:
- Open a terminal window inside IntelliJ IDEA/VSCode (or use your system terminal).
- Navigate to the frontend directory:
/SyntaxBase/frontend/src - Install the dependencies:
npm install
- Start frontend
npm start
Installing dependencies
Starting frontend
To start the backend application, follow these steps:
- Ensure that Java 17 (or higher) is installed.
- In IntelliJ, navigate to:
SyntaxBase/backend/src/main/java/opp - Locate the
BackendApplication.javaclass. - Right-click the file and select Run to start the Spring Boot server.
Running the Spring Boot application
SyntaxBase/
├── .github/
├── backend/
├── database/
├── docs/
├── frontend/
├── microservice-chat/
├── microservice-moderation/
├── microservice-notifications/
├── microservice-shared/
├── monitoring/
├── tests/
├── CHANGELOG.MD
├── LICENSE
├── README.MD
src/
├── components/
├── functions/
├── hooks/
├── images/
├── models/
├── pages/
│ ├── databaseCourses/
│ ├── gameCourses/
│ ├── problemSolvingCourses/
│ └── webCourses/
├── services/
└── styles/
└── utils/
com/programming.tutorial/
├── config/
├── controller/
├── dao/
├── domain/
├── dto/
├── services/
└── BackendApplication.java
microservice_chat/
├── config/
├── controller/
├── dao/
├── domain/
├── dto/
├── services/
└── MicroserviceChatApplication.java
SyntaxBase-moderation-microservice/
│
├── data/
│ └── processed/
│ ├── raw/
│ └── test/
│ └── utils/
|
├── docker/
│ └── api/
└── Dockerfile
│ ├── bert/
└── Dockerfile
│ └── classical/
└── Dockerfile
│ └── llm/
└── Dockerfile
│ └── toxic_bert/
└── Dockerfile
|
├── docs/
│ └── architecture.md
│ └── docs.md
│ └── index.md
│ └── research_paper.md
│ └── training_logs.md
│
├── models/
│ └── saved/
│ └── bert/
| └── classical/
| └── toxic_bert/
│
├── notebooks/
│ └── 01_baseline_experiments.ipynb
│ └── 02_distilbert_experiments.ipynb
│ └── 03_toxicbert_experiments.ipynb
│ └── 04_model_comparison.ipynb
│ └── 05_error_analysis.ipynb
│ └── 06_metrics_analysis.ipynb
|
├── results/
│ └── comparisons/
| └── bert/
| └── llm/
│ └── model_comparison_summary.csv
│ └── runtime_memory_tradeoff.csv
|
│ └── logs/
| └── classical/
| └── llm/
| └── meta-llama-3.1-8b-instruct/
| └── phi-4-reasoning-plus/
| └── qwen3-4b-thinking-2507/
| └── transformer/
| └── distil_bert/
| └── toxic_bert/
│ └── metrics/
│ └── visuals/
│
├── src/
│ ├── classical/
│ ├── llm/
│ ├── prompts/
│ ├── evaluator.py/
│ ├── llm_moderation_client.py/
│ ├── llm_service.py/
│ ├── transformer/
│ ├── utils/
│ │ └── generate_comments/
│ │ └── all_round_comments.py # general comments from various sources
│ │ └── forum_based_comments.py # comments that will likely be in forum
│ │ └── aggregateLlmResults.py
│ │ └── compare_all_llms.py
│ │ └── evaluate_both_models.py
│ │ └── evaluate_checkpoints.py
│ │ └── model_comparison_summary.py
│ │ └── predict_comments_bert.py
│ │ └── predict_comments_toxicbert.py
│ │ └── predict_comments.py
│ │ ├── preprocessing.py
│ │ ├── runtime_memory_tradeoff_comparison.py
| │api_service.py
| |config.py
| |inference.py
| |model_loader.py
| |utils.py
|
├── .gitattributes
├── .gitignore
├── docker-compose.yml
├── LICENSE
├── README.md
└── requirements.txt
com/SyntaxBase/
├── config/
├── controller/
├── dao/
├── domain/
├── dto/
├── listener/
├── services/
├── utils/
└── MicroserviceNotificationsApplication.java
shared/
├── dto/
Here are some example screenshots from the app.
For a full visual walkthrough, visit Full UI Showcase.










