I spent the last couple days creating the first draft of a new web application, initially based on a template (ie copy-paste of another current, working application). The new application will essentially have around four pages and two primary pieces of business-logic: users employing the application to make reservations for seats in their scheduled exams in the lab, and admins adding students/classes/exams and lab hours/capacity to allow the first to work properly.
The application-structure is based on Luminus of a year ago, with upgrades and tweaks since then. The full process for these two days included the following steps and I am happy so far, despite an initial “gee, nine hours with just one page to show?” . I’m curious how many of you go through a similar process and I would love to learn/explain any differences from what I do.
- Initialize a new git repo for all code
- Upgrading and trimming down the dependencies (this new application is considerably simpler than the one the codebase is copied from)
- Deleting non-relevant files from the clj/s “template”
- Finalizing the draft of the SQL schema
- Creating a properly credentialled postgres db on my machine
- Creating the clj namespace CRUD namespaces matching each table in the SQL (emacsed a quick bash script auto-creator of all these)
- Migrating (creating) the tables in the database
- Writing a draft of the complete usecase story tests to describe program operation
- Refactoring from the copy-paste <— after this point I have a working REPL into my app
- Debugging re-frame routing issues
- Establishing bits of the front-end template:
- Latest version of Font Awesome
- Learning Bulma hamburger menu in Reagent (more concise and tasty than the burger JS code they suggest)
- Fairly extensive CSS work (pleasure in Garden)
Still to do:
- Decide on the 2nd party (in-house to my university, but not written by me) web services I will need to access, and obtain credentials/license for them
- Finalize my business logic and database schema with the stakeholders
- Implementing business-logic routes and interfaces
- Production deployment planning: setting up Wildfly for deployment, but probably not Jenkins since full CI/CD is overkill for this little app.
In the other half of my job I am involved in using Wordpress heavily, so I need constantly to weigh effort here against effort/outcome if I implemented this there instead of with Clojure. But that’s another thread in the making.
Are there any extra things you do, or questions about what I do? I’d love to compare and learn.