HTML5 • CSS3 • Flask
A web application inspired by Reddit complete with account, post, and community creation.
Team
Carlos Diaz
Role
Name of role
Timeline
1 month, 2024
Tools
VS Code, HTML5
CSS3, sqlite, Flask
01 - overview
A Reddit-inspired forum app built from scratch
A play on "forum, 4RUMS is a Reddit-inspired web application built with Python, Flask, SQLite3, HTML5, and CSS. The project spans 14 HTML pages, a single database, one stylesheet, and a central Python application.
02 - design & features
Authentication, navigation, and everything in between
4RUMS separates functionality by authentication level. Guest users can browse the homepage, communities, posts, comments, and public profiles. Logged-in users unlock the ability to create and edit posts and communities, leave comments, and customize their profiles, though username and password changes were not implemented at the time.
Administrator accounts carry additional privileges, namely editing and deleting communities. The first account created in a fresh database is automatically granted admin status, with additional admin IDs manageable directly in app.py. It's worth noting that communities should be deleted before removing the admin account to avoid conflicts.
Navigation follows conventions familiar to Reddit users. The homepage displays all posts in reverse chronological order, with community filtering available via the left sidebar. Each post shows its author, title, timestamp, content, and like count — with comments visible on the post's dedicated page. A future update will factor engagement (likes and comments) into post ordering.
User profiles are accessible via the top-right icon, where users can view their posts and comments, update their display name, bio, and profile picture, or delete their account. Posts can be created and edited via the top navigation, and communities can be created through the left sidebar. Invalid page visits are caught and redirect users with a clear error message.Under the hood, a previous bug caused deleted posts to leave NULL references in the comments and likes tables, breaking profile pages. This has since been resolved using SQLAlchemy's cascade delete behavior.
03 - Skills used
From static sites to dynamic web applications
This project drew on Python, HTML, CSS, and SQL — but the real challenge was applying them in an unfamiliar context. Having only built static sites before, tackling a dynamic, user-driven web application was a significant step up. Most of the difficulty came from learning Flask on the fly while simultaneously implementing a feature-heavy product. That constraint ultimately accelerated my growth in both web development and problem-solving.





04 - future considerations
Room to grow
Several features were scoped out but couldn't be completed within the project's timeframe: comment likes and replies, user following, direct messaging, comment editing, and community subscriptions. Responsive design for non-desktop devices is also on the roadmap. A future update aims to address all of the above and improve the overall experience.
05 - outcome & reflection
What CS50x's hardest assignment taught me
This is still my favorite, and most educational, web development project. The open-ended brief gave me room to be creative and pursue something I genuinely cared about. The final product isn't exactly what I first imagined, but it's entirely my own, and that makes it something I'm proud of. There's still plenty left to learn, but this project made clear that I'm capable of more than I thought.