Skip to content

Fargolnz/Feedback-Board

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

15 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ’¬ Feedback Board

A simple feedback management system built with FastAPI, SQLite, SQLAlchemy, and Bootstrap.


πŸ“Œ Overview

This project allows users to submit feedback and enables administrators to review and update the status of submitted feedback through a dashboard.

The application was developed as a small end-to-end product, focusing on simplicity, maintainability, and rapid delivery.


πŸ‘©πŸ»β€πŸ’» Developer

Seyyedeh Fargol Nazemzadeh


✨ Features

πŸ‘€ User Side

  • Submit feedback
  • Provide a title and message
  • Automatic feedback status assignment

πŸ›‘οΈ Admin Dashboard

  • Secure Authentication for dashboard access
  • View all submitted feedback
  • Track feedback status
  • Update feedback status

πŸ“¬ Supported Statuses

  • Registered (default status when feedback is created)
  • Under Review
  • Resolved

πŸ” Authentication

To enhance security and prevent unauthorized status changes, a simple authentication system has been implemented:

  • Admin Login: Users must enter a username and password to access the admin dashboard

  • Route Protection: Unauthenticated users are automatically redirected to the login page when attempting to access the dashboard

  • Session Management: Upon successful login, user information is stored in the session; clicking the logout button clears the session

  • Simple Validation: Currently uses hardcoded credentials, with the flexibility to extend to a database-based authentication system in the future


βš™οΈ Technology Stack

🌐 Backend

  • FastAPI - Modern, high-performance web framework for building APIs
  • SQLAlchemy - Powerful ORM for database interaction
  • SQLite - Lightweight, zero-configuration database

🎨 Frontend

  • Jinja2 Templates - Server-side template rendering engine
  • Bootstrap 5 - Responsive CSS framework for clean UI design

🐳 Containerization

  • Docker - Containerization for consistent development and deployment
  • Docker Compose - Multi-container orchestration for easy management

πŸ’‘ Technical Decisions

1️⃣ Why FastAPI?

FastAPI provides a lightweight and modern framework that allows rapid backend development while keeping the codebase clean and maintainable.

2️⃣ Why SQLite?

SQLite is sufficient for the scope of this project and requires zero external configuration, making the setup process simple.

3️⃣ Why Server-Side Rendering?

Since the project requirements are relatively small, Jinja2 templates provide a simpler solution than introducing a separate frontend framework.

4️⃣ Why Session-Based Authentication?

Using sessions for authentication management is a simple and effective approach for small projects that don't require JWT or OAuth implementation. It integrates seamlessly with Jinja2 templates and provides a straightforward user experience.

5️⃣ Why Docker?

Docker ensures the application runs consistently across any system, eliminates complex manual setup, and isolates the app from your host environmentβ€”allowing you to run the project with just a few simple commands.


πŸ—‚οΈ Project Structure

feedback-board/
β”‚
β”œβ”€β”€ app/
β”‚   β”œβ”€β”€ crude.py
β”‚   β”œβ”€β”€ database.py
β”‚   β”œβ”€β”€ main.py
β”‚   β”œβ”€β”€ models.py
β”‚   β”œβ”€β”€ routes.py
β”‚   β”œβ”€β”€ schemas.py
β”‚   β”‚
β”‚   β”œβ”€β”€ templates/
β”‚   β”‚   β”œβ”€β”€ dashboard.html
β”‚   β”‚   β”œβ”€β”€ feedback.html
β”‚   β”‚   └── login.html
β”‚   β”‚
β”‚   └── static/
β”‚       └── css/
β”‚           └── style.css
β”‚
β”œβ”€β”€ screenshots/
β”‚
β”œβ”€β”€ .dockerignore
β”œβ”€β”€ .gitignore
β”œβ”€β”€ docker-compose.yml
β”œβ”€β”€ Dockerfile
β”œβ”€β”€ README.md
└── requirements.txt

πŸ› οΈ Installation

🐳 Running with Docker (Recommended)

The easiest way to run the application without installing Python or any dependencies on your system.

⚠️ Prerequisites

Docker Desktop installed and running.

πŸͺœ Steps

1. Clone the repository

git clone https://github.com/Fargolnz/Feedback-Board.git
cd Feedback-Board

2. Build the Docker image

docker-compose build

3. Start the container

docker-compose up -d

4. Access the application

Open your browser and navigate to:

http://localhost:8000

5. Stop the container (when done)

docker-compose down

πŸ’» Local Installation (Without Docker)

πŸͺœ Steps

1. Clone Repository

git clone https://github.com/Fargolnz/Feedback-Board.git
cd Feedback-Board

2. Create Virtual Environment

python -m venv venv

3. Activate Environment

Windows:

venv\Scripts\activate

Linux / macOS:

source venv/bin/activate

4. Install Dependencies

pip install -r requirements.txt

5. Run Application

uvicorn app.main:app --reload

6. Open in Browser

http://127.0.0.1:8000

πŸ”‘ Admin Login Credentials

  • Username: admin

  • Password: verystrongpass


πŸ–ΌοΈ Screenshots

πŸ’¬ Feedback Submission

Feedback

πŸ” Login Panel

Login

πŸ’» Admin Dashboard

Dashboard


πŸ“ Additional Notes

  • The database is automatically created on the first run (in both Docker and local modes)
  • Status changes can only be performed by authenticated administrators
  • All feedback entries are stored with their creation timestamp
  • The application follows a simple, clean architecture that can be easily extended