
Overview of the review website.
Single project – Web application built with Django
This self-developed game review platform allows users to create games, rate them and publish reviews. The project covers the entire development process from concept to implementation.
The goal was to build a user-friendly and visually appealing platform that enables gamers to share opinions and showcase their favorite games.
🔹 Core Features
User Accounts
Registration, login & personal dashboard for every user.
Game Catalog
Searchable overview of all games with ratings and reviews.
Review System
Users can publish game reviews including rating & avatar.
🔹 Tech Stack & Tools
- Backend: Django
- Frontend: HTML/CSS with template customizations
- Database: SQLite
- IDE: PyCharm
- Additional tools:
Pillow(image processing)django-gravatar2(avatars via e-mail)
🔹 Data Model
The site is based on a relational schema with three main models:
User: Django built-in authenticationReview: relation to game and user, rating, review text, timestampGame: title, description, developer, image, average rating

Simplified DB structure: relationships between games, users and reviews.
🔹 Code example (upload view)
from django.contrib.auth.decorators import login_required
from django.shortcuts import render, redirect, get_object_or_404
from .forms import ReviewForm
from .models import Game
@login_required()
def upload_review(request):
game_id = request.GET.get('game_id')
game = get_object_or_404(Game, id=game_id) if game_id else None
if request.method == 'POST':
form = ReviewForm(request.POST, request.FILES)
if form.is_valid():
review = form.save(commit=False)
review.user_id = request.user.id
review.save()
calculate_and_update_average_rating(review.game)
return redirect('game-reviews', review.game_id)
else:
form = ReviewForm(initial=dict(game=game))
return render(request, 'upload_review.html', dict(upload_review=form))
This view handles review uploads and uses a dedicated template — an example of Django’s modular customization.
🔹 Challenges & Solutions
- Form styling: Django forms required manual CSS and template overrides to achieve the desired layout.
- Gravatar integration: Retrieving avatar images via email and fitting them into the layout — solved by template tweaks and using
django-gravatar2.
💬 Conclusion & Outlook
The project was a valuable learning experience, especially working with Django, template customization and relational DB design. The site fulfills the initial requirements and provides a solid base for future features like:
- Rating system for reviews
- Filtering & search functionality
- REST API for external tools

Game detail page with embedded reviews and user avatars.