Skip to content

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

0 stars

Watchers

1 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors