A full-stack web application for sharing internal feedback between managers and employees. Built with React frontend and FastAPI backend.
- User Registration - Create new accounts with email verification
- Secure Login - JWT token-based authentication
- Profile Management - Update personal information and change passwords
- Account Deletion - Permanently delete user accounts
- Role-based Access Control - Manager/Employee permissions
- Session Management - localStorage-based session persistence
- Dashboard with feedback statistics and charts
- Create and update feedback for team members
- View all feedback given to employees
- Team member management
- Sentiment analysis visualization
- Personal dashboard with feedback timeline
- View and acknowledge received feedback
- Feedback statistics and progress tracking
- Clean, intuitive interface
- Structured feedback with strengths and areas to improve
- Sentiment classification (Positive/Neutral/Negative)
- Acknowledgment tracking
- Timestamp and audit trail
- In-app notifications (notification bell)
- Email notifications
- Feedback requests (employees can request feedback from managers)
- Anonymous peer feedback (with optional flag)
- Tagging and tag filtering (e.g., communication, leadership)
- Export feedback as PDF (for managers)
- Employee comments on feedback (with markdown support)
- FastAPI - Modern Python web framework
- SQLAlchemy - SQL toolkit and ORM
- SQLite - Lightweight database
- Pydantic - Data validation with email support
- JWT - Authentication tokens
- Passlib - Password hashing with bcrypt
- Docker - Containerization
- React 18 - UI library
- React Router - Client-side routing
- Tailwind CSS - Utility-first CSS framework
- Axios - HTTP client
- Recharts - Chart library
- Lucide React - Icon library
InternshipAssignment/
βββ backend/
β βββ routers/
β β βββ __init__.py
β β βββ auth.py
β β βββ feedback.py
β β βββ users.py
β βββ database.py
β βββ main.py
β βββ models.py
β βββ schemas.py
β βββ services.py
β βββ requirements.txt
β βββ Dockerfile
βββ frontend/
β βββ public/
β β βββ index.html
β βββ src/
β β βββ components/
β β β βββ Login.js
β β β βββ Register.js
β β β βββ Profile.js
β β β βββ Navbar.js
β β β βββ ManagerDashboard.js
β β β βββ EmployeeDashboard.js
β β β βββ FeedbackForm.js
β β β βββ FeedbackList.js
β β β βββ FeedbackDetail.js
β β β βββ FeedbackItem.js
β β β βββ FeedbackRequestForm.js
β β β βββ FeedbackRequestList.js
β β β βββ NotificationBell.js
β β βββ contexts/
β β β βββ AuthContext.js
β β βββ App.js
β β βββ index.js
β β βββ index.css
β βββ package.json
β βββ tailwind.config.js
β βββ postcss.config.js
βββ README.md
-
Frontend (Vercel): https://feedback-system-seven-delta.vercel.app
-
Backend (Render): https://feedbacksystem-n26h.onrender.com
FRONTEND_ORIGINSβ Comma-separated list of allowed frontend URLs (e.g.https://feedback-system-seven-delta.vercel.app,https://feedbacksystem-frontend.onrender.com)SECRET_KEY,DATABASE_URL, etc. (see code for details)
REACT_APP_API_URLβ URL of your backend (e.g.https://feedbacksystem-n26h.onrender.com)
- If you get CORS errors, make sure your backend's
FRONTEND_ORIGINSincludes all frontend URLs (Vercel, Render, localhost for dev). - Always redeploy the backend after changing environment variables.
- Python 3.8+
- Node.js 16+
- Docker (optional)
-
Navigate to backend directory:
cd backend -
Install dependencies:
pip install -r requirements.txt
-
Run the FastAPI server:
uvicorn main:app --reload --host 127.0.0.1 --port 8000
Or using Docker:
docker build -t feedback-backend . docker run -p 8000:8000 feedback-backend -
Access API documentation:
- Swagger UI: http://127.0.0.1:8000/docs
- ReDoc: http://127.0.0.1:8000/redoc
-
Navigate to frontend directory:
cd frontend -
Install dependencies:
npm install
-
Start the development server:
npm start
-
Access the application:
- Frontend: http://localhost:3000
- Navigate to http://localhost:3000
- Click "Sign up" to create a new account
- Fill in your details and choose your role (Manager/Employee)
- You'll be automatically logged in after registration
- Use your username and password to sign in
- You'll be redirected to your role-specific dashboard
POST /auth/register- User registrationPOST /auth/login- User login
GET /users/profile- Get current user profilePUT /users/profile- Update user profileDELETE /users/profile- Delete user accountGET /users/employees- Get employee list (managers only)
GET /feedback/- Get feedback (role-based)POST /feedback/- Create new feedback (managers only)GET /feedback/{id}- Get specific feedbackPUT /feedback/{id}- Update feedback (managers only)POST /feedback/{id}/acknowledge- Acknowledge feedback (employees only)GET /feedback/dashboard/stats- Get dashboard statistics
- Visit the application and click "Sign up"
- Fill in your details and choose your role
- Login with your credentials
- View manager dashboard with statistics and charts
- See team members list
- Create new feedback for employees
- View and edit existing feedback
- View employee dashboard with received feedback
- See feedback timeline and statistics
- Acknowledge feedback items
- Update profile information
- Click on your name in the navbar
- Select "Profile Settings"
- Update your information or change password
- Optionally delete your account
cd backend
docker build -t feedback-backend .
docker run -p 8000:8000 feedback-backenddocker-compose up --build- JWT token authentication
- Password hashing with bcrypt
- Role-based access control
- Input validation with Pydantic
- Email validation
- CORS configuration
- SQL injection protection with SQLAlchemy
id(Primary Key)name(String)username(String, Unique)email(String, Unique)password_hash(String)role(Enum: manager/employee)
id(Primary Key)manager_id(Foreign Key)employee_id(Foreign Key)strengths(Text)improvements(Text)sentiment(Enum: positive/neutral/negative)acknowledged(Boolean)created_at(DateTime)updated_at(DateTime)
- Responsive design with Tailwind CSS
- Clean, professional interface
- Role-based navigation
- Interactive charts and statistics
- Loading states and error handling
- Intuitive feedback forms
- Timeline view for feedback history
- User profile management
- Mobile-responsive design
- Email verification for registration
- Password reset functionality
- Feedback templates
- Advanced analytics
- Team hierarchy management
- Feedback scheduling
- Mobile app support
- Multi-language support
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Submit a pull request
This project is created for internship assignment purposes.
cd backend
pytestcd frontend
npm testNote: This application includes proper user registration, authentication, and profile management. All passwords are securely hashed and user data is properly validated.




