ThreadFusion is a dynamic and responsive forum website designed and implemented as the final project for CS50’s Web Programming with Python and JavaScript.
It provides a platform for users to engage in discussions, ask questions, and explore topics of interest through a well-organized tagging system. The application uses Django for the backend and HTML, SASS/CSS, and JavaScript for the frontend.
Backend
- Python
- Django
- Django ORM
Frontend
- HTML
- SASS/CSS
- JavaScript
- Quill WYSIWYG Editor
Database & Storage
- Neon PostgreSQL — Production database
- Cloudinary — User-uploaded media storage
Deployment
- Docker — Application containerization
- Gunicorn — Production WSGI server
- Render — Application hosting
- WhiteNoise — Static file serving
-
Clone the repository using:
git clone https://github.com/RajDeshmukh2001/threadfusion.git
-
Navigate into the project directory:
cd threadfusion -
Create and activate a Python virtual environment:
python -m venv .venv
Windows:
.venv\Scripts\activate
-
Install the project dependencies:
pip install -r requirements.txt
-
Create a
.envfile in the project root and configure the required environment variables:SECRET_KEY=your_django_secret_key DEBUG=True DATABASE_URL=your_neon_database_connection_string CLOUDINARY_URL=your_cloudinary_url
-
Apply the existing database migrations:
python manage.py migrate
-
Start the Django development server:
python manage.py runserver
-
Open the application in your browser:
http://localhost:8000/
-
Optional: Django Admin - Create a superuser if you want to access Django Administration:
python manage.py createsuperuser
-
Build the Docker image:
docker build -t threadfusion . -
Run the container:
docker run --rm --name threadfusion-app --env-file .env -p 8000:8000 -e PORT=8000 threadfusion
-
Then open:
http://localhost:8000/
ThreadFusion is deployed using:
- Docker for containerization
- Render for application hosting
- Neon PostgreSQL for the production database
- Cloudinary for persistent media storage
- Gunicorn as the production WSGI server
- WhiteNoise for static files
Production secrets and database credentials are configured through environment variables.
- User Authentication: Registration, login, logout, password validation, and authenticated user actions.
- Questions & Answers: Users can ask questions and post detailed answers using a rich-text editor.
- Rich-Text Editing: Quill WYSIWYG editor for formatting questions and answers, including code snippets, links, images, and other formatting options.
- Comments: Users can comment on answers and participate in discussions.
- Tags & Search: Questions can be categorized using tags and searched by title, description, or tags.
- User Profiles: Users can create and update profiles with profile images and social links.
- Follow System: Users can follow other users and view their activity.
- Likes: Users can like answers.
- Pagination: Large collections of questions, answers, and comments are paginated for better usability.
- User Feedback: Toast notifications and confirmation dialogs provide feedback for important actions.