Clojure-FinAdmin is a prototype web application designed for financial administration, built using Clojure. It offers basic functionalities such as user login/logout, session management, and the ability to add and modify transactions, currently only supporting simple invoices and expenses.
Backend: Clojure with Ring for HTTP handling, Reitit for routing.
Frontend: Hiccup for templating, HTMX for dynamic content, TailwindCSS for styling, JavaScript and Chart.js for interactivity and charts.
Data Storage: PostgreSQL for data storage, Docker for easy setup and deployment.
clojure-finadmin/
│─── deps.edn
|─── docker-compose.yml # PostgreSQL docker instance
|─── package.json
|─── postcss.config.js # TailwindCSS dependencies
|─── tailwind.config.js
│─── resources/
| |─── database
| | |─── schema.sql # Database schema
| |─── public # Contains CSS styling, Javascript code and static images (icons, logos)
| |─── logback.xml # Logparsing settings
│─── src/
│ │─── finadmin/
│ │ │─── database # PostgreSQL connection and queries
│ │ │─── handlers # Request handlers
│ │ │─── views # HTML rendering (Hiccup/HTMX)
│ │ │─── routes.clj # API and HTML routes (Reitit)
│ │ │─── core.clj # Entry point (Ring)
│─── README.md
Before setting up the project, ensure you have the following installed:
- Java: JDK 1.8 or higher.
- Clojure CLI: For managing Clojure dependencies and running the application.
- Docker: To run the PostgreSQL database in a containerized environment.
- Node.js and npm: For managing frontend dependencies and building assets.
Setup and Installation
- Clone the Repository:
foo@bar:~$ git clone https://github.com/kevin-rn/Clojure-FinAdmin.git foo@bar:~$ cd Clojure-FinAdmin
- Set Up the PostgreSQL Database:
foo@bar:~$ docker-compose up -d - Start the Application:
foo@bar:~$ clj -M -m finadmin.core - Accessing the Application:
Open a web browser and navigate to http://localhost:3000 to interact with the application.
For tailwindcss development:
foo@bar:~$ npm installAnd run either of the following:
foo@bar:~$ npm run build:css
foo@bar:~$ npm run watch:css





