Chatddit.com
| Chatddit.com | |
|---|---|
| Type of site | Social news and discussion |
| Created by | Stan Switaj |
| URL | chatddit.com |
| Written in | Python 3, JavaScript |
| Database | PostgreSQL |
| Web server | nginx + fcgiwrap |
| Domain registered | 2024 |
| Programmed | 2026 |
| Current status | Active |
Chatddit.com is a social news and discussion website created and programmed by Stan Switaj. Members post links and text — including music and video links — vote on what others post, and hold threaded conversations underneath, in the manner of a link-aggregation community site. It is written in Python 3 with a PostgreSQL database and jQuery on the page, with no web framework anywhere in it.
The chatddit.com domain was registered in 2024, but the site itself was not programmed until 2026; the project's own summary documentation records version 1.0 in August 2026. It was conceived as a modern forum for sharing website addresses, ideas and news.
Content and categories
Posts live in categories, and the category system has two tiers. Fourteen primary categories are seeded with the site and always appear on the front page: General, Music, Videos, Movies, TV Shows, Art, Gaming, Tech, Science, Politics, Sports, Humor, Business and IPO. Beyond those, any member can create an other category, which is browsed from a separate Other Categories page and behaves in every respect like the fixed ones — it simply stays off the front page so the fixed set is not buried.
The feed can be filtered by category, sorted, searched and paged. Alongside it the site provides a leaderboard, a friends view, a saved-posts area for bookmarks, member profiles and an administration panel for moderators.
Posts carry a status of active, archived or deleted, and deletion is soft — rows remain in the database rather than being destroyed. The site can optionally expire posts automatically: when enabled, active posts older than a configured age, thirty days by default, move to archived status the next time the feed loads, so they drop off the front page while remaining findable by search and by direct link. The feature ships switched off.
Readers can choose the site's appearance, with several colour themes — including blue, green, red, pink, light and a glow variant — and a choice of how nested comment threads are drawn, as neutral greys, multicoloured lines, or shades of blue or green.
Architecture
The whole site is a single HTML shell rendered by one small Python script, with the application itself living in the JavaScript that the shell loads — roughly 3,900 lines in one file. Page loads are handled by that script, which reads the request path and, for a permalink to an individual post, looks the post up so that the page title, canonical address and Open Graph tags are correct when the link is shared. Everything else — the feed, posts, votes, comments, follows, saves, notifications and uploads — is fetched by the front end from a set of endpoints under an ajax directory.
Each endpoint file dispatches on an action parameter, so one file holds many related operations: authentication and profiles in one, posts, categories, voting and administrative actions in another, threaded comments and moderation in a third, social features in a fourth and media uploads in a fifth. Sessions are a cookie holding a token that is looked up in the database on each request.
The security posture is conventional and server-side. Every administrative action re-checks the caller's role on the server, on the stated principle that the front end hiding a button is never the control; SQL is written with parameter placeholders rather than string interpolation of user input; and anything interpolated into the page by the front end is escaped first. The site runs as CGI under nginx with fcgiwrap, the same deployment style as Switaj's other projects.
Database changes are kept as numbered migration files applied by hand, with the full current schema maintained alongside them so that a fresh installation and an upgraded one end up the same.
Version 1.0
The project's summary records version 1.0 as the release that let administrators file a post under any category, including one invented on the spot. Previously the per-post category dropdown was built from the primary-category list alone, so although the server was willing to move a post anywhere, no member-created category could be selected — a post could not be moved into a category such as Economy even though it existed.
The release rebuilt that control from the full category list, grouped under primary and other headings so a growing list of member-made categories does not bury the fixed set, and added a New category… entry at the end. Choosing it opens a naming box beside the post rather than moving anything, so a stray click costs nothing; supplying a name and an emoji creates the category and files the post in a single request, rather than as two steps that could leave a category created and the post unmoved. An existing name is reused rather than refused, and a category created on one post appears on every other without a reload.
See also
External links
- Chatddit.com — official website