website-2 Dynamic Site
website.git · Tickets
A Website Ticket (Triaged):
Ticket · History
Symptoms
This site is currently statically generated, which has several downsides:
- The static site generator takes a long time to run due to the number of pages being generated. This has been slowly increasing over time, and is becoming more and more burdensome.
- Git frontend pages only show the main branch and the latest commit of that branch. You can't see active branches or commit history. (see website-7 Dynamic Git Frontend)
- The SPA logic makes one request for every new link a user ever sees, which may be dozens per page. These should be consolidated into one, or at least fewer, requests. While the javascript app is being rewritten, several things could also be improved - ticket TBD
- Automating any part of the site is very difficult, as it requires creating a ruby plugin. The Git fronted is implemented this way, and it shows in its lack of growth.
- The site content must obviously be... static, which is quite limiting
- Certain features of the site require javascript, such as the "back" links throughout the site
- Redirects are done in html, which is slow, causes flashing, and may work poorly without js. Redirects should be done via http.
- The static site generator blindly builds all website files, which is a security vulnerability
With the ability for dynamic content, some new interesting things could be made:
- As mentioned earlier, a better git frontend, js-less back buttons
- Chat room?
- Interactive site-wide games?
- Bug report/feedback buttons for git repos/ticket pages?
- Sending only the font characters needed on first load to reduce total size and time for the font to load in
Many more things could be automated:
- "Projects" with tabs - links to git, tickets, etc.
- Ticket boilerplate
- Modify Dates?
- Links to pages that don't yet exist (big for future stuff)
- Permalinks
- Full-screen image pages that work without JS
- Reference Pages
- Etc.
Problem?
Not sure.
- The site is unable to grow due to being statically generated, which is a relic of its history.
Implementation
As all pages are promised to be permalinks, the site must be rewritten while keeping full parity.
After the server has been written, it can be swapped out with the old static server.
- Implement website-5 Clojure Server
- Dynamically generate markdown pages
- Ensure full parity with the old website
- Make testing environment, put everything in one dir so you can just test thing yk