Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/dzaporozhets/clojure-web-application

Sample web application built with Clojure. Easy start for people new to Clojure.
https://github.com/dzaporozhets/clojure-web-application

clojure

Last synced: 3 months ago
JSON representation

Sample web application built with Clojure. Easy start for people new to Clojure.

Awesome Lists containing this project

README

        

# Sample web application built with Clojure

[![pipeline status](https://gitlab.com/dzaporozhets/clojure-web-application/badges/main/pipeline.svg)](https://gitlab.com/dzaporozhets/clojure-web-application/commits/main)

The goal of this project is to make a blank web application with authentication and tests.
It can be used as an template for starting a new project on Clojure or for learning Clojure.

Merge requests to this project are welcome!

## Index

* [Prerequisites](#prerequisites)
* [Features](#features)
* [Running](#running)
* [Database](#database)
* [Tests](#tests)

## Screenshot

Just in case you are curious how it looks when started

![Screen_Shot_2017-08-06_at_6.20.18_PM](https://gitlab.com/dzaporozhets/clojure-web-application/uploads/6d8ba305b6b5cd7c046ffda55c4ebe16/Screen_Shot_2017-08-06_at_6.20.18_PM.png)

## Prerequisites

1. [Leiningen][https://github.com/technomancy/leiningen] 2.0.0 or above installed.
2. PostgreSQL

## Features

* Registration
* Login
* Profile page with ability to update the password and remove the account
* PostgreSQL database with migrations
* Layout with Bootstrap CSS and jQuery
* Send email confirmation on signup (optional)
* Avatar upload

### TODO

* add remember me checkbox for authentication
* add forget password feature

## Running

Create the database:

createdb sample

To start a web server for the application, run:

lein ring server

Now visit http://localhost:3000/ to see the app running.

### Run as container

The repository contains the `Dockerfile`. You can build and run the app with Docker.
App will be running on port `5000` by default. Database is not included.
So make sure to pass a `DATABASE_URL` to the container.

### Running on Heroku

Clone the repository and cd into it. Then execute next commands:

```
heroku create
heroku addons:create heroku-postgresql:hobby-dev
git push heroku main
heroku open
```

The last command should open the application in your browser.

## Database

Application reads the `DATABASE_URL` environment variable for the database connection.
If none provided, it will use the default value from `src/sample/db.clj`.

### Migrations

Migrations are run automatically when you start the app or tests.
If you need to manually run migrations, you can use next command:

lein migratus migrate

## Tests

To run tests you need to setup a test database

# create a separate database for tests
createdb sample-test

# run tests
DATABASE_URL=postgresql://localhost:5432/sample-test lein test