A full-stack web application for providing structured feedback on student projects. This platform allows instructors to submit detailed evaluations and students to view their feedback.
This project follows a monorepo structure with:
- Frontend: React application with Tailwind CSS styling
- Backend: Node.js/Express RESTful API with JWT authentication
- Database: PostgreSQL
- Containerization: Docker and Docker Compose
- View all students and projects
- Search and filter students by name
- Submit structured feedback using rubric scores
- View all submitted feedback
- Export feedback as PDF
- View feedback for their projects
- See detailed breakdowns of rubric scores
- Download feedback as PDF
joineazy-feedback/
├── client/ # React frontend
│ ├── src/
│ │ ├── api/ # API services
│ │ ├── components/ # React components
│ │ ├── context/ # Context API for state management
│ │ ├── App.js # Main App component
│ │ └── index.js # Entry point
│ ├── Dockerfile # Frontend Docker configuration
│ └── package.json # Frontend dependencies
├── server/ # Express backend
│ ├── src/
│ │ ├── controllers/ # Route controllers
│ │ ├── db/ # Database connection
│ │ ├── middleware/ # Express middleware
│ │ ├── models/ # Data models
│ │ ├── routes/ # API routes
│ │ └── index.js # Server entry point
│ ├── Dockerfile # Backend Docker configuration
│ └── package.json # Backend dependencies
├── docker-compose.yml # Docker Compose configuration
├── .env # Environment variables
└── README.md # This file
- Docker and Docker Compose
-
Clone this repository:
git clone <repository-url> cd joineazy-feedback
-
Create a
.env
file in the root directory with the following variables (or use the default):POSTGRES_DB=joineazy_feedback POSTGRES_USER=postgres POSTGRES_PASSWORD=postgres JWT_SECRET=your_secret_key_here NODE_ENV=production
-
Build and start the containers:
docker-compose up -d
-
Access the application:
- Frontend: http://localhost:3000
- Backend API: http://localhost:5000
POST /api/auth/register
: Register a new userPOST /api/auth/login
: Login and receive JWTGET /api/auth/me
: Get current user profile
POST /api/feedback
: Submit new feedback (instructor only)GET /api/feedback
: Get all feedback (instructor only)GET /api/feedback/me
: Get feedback for current student (student only)GET /api/feedback/:id
: Get specific feedback by ID
GET /api/students
: Get all students (instructor only)
POST /api/projects
: Create a new project (instructor only)GET /api/projects
: Get all projects
-
Start the containers in development mode:
docker-compose -f docker-compose.dev.yml up
-
The application will be available at:
- Frontend: http://localhost:3000
- Backend API: http://localhost:5000
If you encounter issues with the containers:
-
Server container exiting:
# View logs for the server container docker logs joineazy_server # Restart the server container docker-compose restart server
-
Database connection issues:
# Check if the database is running docker ps # Connect to the database to verify it's working docker exec -it joineazy_db psql -U postgres -d joineazy_feedback
-
Client shows 404 errors:
- The React development server might still be starting up
- Wait a few moments and refresh the page
- Check if the client container is running with
docker ps
The application automatically creates the following test accounts and sample data when first initialized:
-
Instructor Account:
- Username: instructor
- Password: password
- Role: instructor
-
Student Account:
- Username: student
- Password: password
- Role: student
The system is pre-populated with the following sample projects:
- Web Development Final Project
- Data Science Portfolio
- Mobile App Development
- Database Design Project
Sample feedback entries are created for the student account across multiple projects with different rubric scores and detailed comments. This allows you to immediately see how the feedback system works without having to create entries manually.
- Frontend: React, React Router, Tailwind CSS, Axios, jsPDF
- Backend: Node.js, Express, JSON Web Tokens
- Database: PostgreSQL
- Containerization: Docker, Docker Compose
This project is licensed under the MIT License.