11 Home
Thor the Norseman edited this page 11 months ago

GeoKitties concept art

GeoKitties is a homage to and parody of GeoCities, except for kitties, meaning that all pages must be cat themed.

Said pages must also be delightfully bad. In order to ensure this, constraints will be introduced, such as:

  • Modern HTML syntax is filtered out
  • Old HTML syntax like <marquee> and <blink> tags are emulated
  • Only very small images are allowed (?)
  • All JPEGs are recompressed in low quality
  • GIFs are allowed but no PNGs
  • Only garish colours are possible
  • All nice fonts are disabled
  • Limit HTML connections to dialup speeds(?)



Vanilla JS would be the most universal framework. React, Vue or other lightweight frameworks can also work.


  • UI model and controller logic for pre-written HTML/CSS
  • JS polyfill that emulates HTML tags such as blink and marquee
  • File manager with upload function and text editor (using a 3rd party editor module for this is fine or even desired, since writing a good text editor is hard)


Based on a cluster of services (microservices) that provide API endpoints to the frontend, with an Nginx reverse proxy sitting in front of them to tie them together into a collection of APIs. In practice, this means that developers can work on their own small part of the backend without needing to coordinate much.

The project is language-agnostic but will stick to a maximum of 3 backend languages to keep things manageable. Languages should be popular, with broad community support and plenty of StackOverflow results. Python will probably be among them. As for frameworks, so long as a lot of people use it, it's okay.


  • General routing logic for main site pages, special subdomain routing logic for user pages
  • User account API: create, register, sign-in, lost password
  • File API: Persistent storage of files and folders per user, CRUD operations, support for middleware (so we can post-process HTML code)
  • HTML post-processor: Strip out all modern HTML tags such as <style>, generate modern equivalents for certain old HTML constructs where possible (frontend polyfill does the rest)

Where possible, services and modules that operate independently are preferred, with glue logic to make them function together.