Skip to content

Prototype WebApp built in Clojure meant for simple Financial administration of Invoices and Expenses.

Notifications You must be signed in to change notification settings

kevin-rn/Clojure-FinAdmin

Repository files navigation

Clojure Financial Administration

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.

login

Technologies Used

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.

Project Structure

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   

Prerequisites

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

  1. Clone the Repository:
    foo@bar:~$ git clone https://github.com/kevin-rn/Clojure-FinAdmin.git  
    foo@bar:~$ cd Clojure-FinAdmin  
  2. Set Up the PostgreSQL Database:
     foo@bar:~$ docker-compose up -d
  3. Start the Application:
     foo@bar:~$ clj -M -m finadmin.core 
  4. Accessing the Application:
    Open a web browser and navigate to http://localhost:3000 to interact with the application.

For tailwindcss development:

 foo@bar:~$ npm install

And run either of the following:

 foo@bar:~$ npm run build:css
 foo@bar:~$ npm run watch:css

Features

  • Basic authentication with Ring session handling as well as ability to update password
    update-password

  • Responsive UI
    sidebar

  • Adding Transactions
    add-transaction

  • Viewing and interaction with Transaction History
    transaction-history

  • Modifying Transactions (edit and delete)
    modify-transaction

Limitations

  • Only supports simple Invoice and Expense transactions
  • Ability to actually upload documents is not in place
    document-upload
  • Error message handling. Only a few errors and exceptions are handled but not all.
  • Proper data handling. For example loading data into plots could be done better.

About

Prototype WebApp built in Clojure meant for simple Financial administration of Invoices and Expenses.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published