Public archive for the Return to Ritherdon project. https://www.nicolaellisandritherdon.com
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
Craig Oates e5c95b77dc rename README.markdown to README.org and add install/sys info. 1 year ago
conf update .conf and .service files for meilisearch instance. 1 year ago
hunchentoot-example make back-up copy of cookie cutter code, for reference. 2 years ago
scripts add create-user.sh script. 2 years ago
src comment out the 'covert' function in storage package. 2 years ago
static update main.css (hover state for 'danger zone' links/buttons). 2 years ago
storage/default-assets update default favicon.png and site-logo.png files. 2 years ago
templates update /layouts/header.html template (reduce size of site header). 2 years ago
tests create Caveman2 project (using Caveman2's project generator). 2 years ago
.gitignore update .gitignore to ignore the /snapshots directory. 2 years ago
LICENSE update licence. 2 years ago
README.org rename README.markdown to README.org and add install/sys info. 1 year ago
app.lisp create Caveman2 project (using Caveman2's project generator). 2 years ago
makefile update makefile (remove systemd and nginx stuff, focus on install). 1 year ago
ritherdon-archive.asd intern packages in ritherdon-archive.asd file (default as strings). 2 years ago

README.org

Nicola Ellis and Ritherdon Archive

This is an website, written in Common Lisp and built on top of the Caveman2 framework. Its main intention is to be the digital archive for the work produced by Nicola Ellis during her time working alongside Ritherdon.

https://neandr.nicolaellis.com

Overview of Technology Used

Below is a non-exhaustive list of the tech. used to build and run this website:

For a complete list of packages used by Common Lisp, look at the ritherdon-archive.asd file.

System Overview

The complete system is broken into two services:

  1. Ritherdon Archive (the main site)
  2. Meilisearch (the separate search system/service/instance)

From an end-user's perspective, they shouldn't be able to tell the Meilisearch service is part of the overall system. When an end-user uses the Search features on the main site, the main site will make the requests to the Meilisearch service. From there, the Meilisearch service will return its results to the main site – on the end-user's machine. You should see this closed-loop in the diagram below.

  graph TD
      Request((Request)) --> Server
      Server{Nginx} --> Archive
      Server -.-> Meilisearch
      Archive -. Search terms sent to server \n as their own requests .-> Request
      Request -.-> Server
      Meilisearch -. Results returned to Archive \n on clients machine .-> Archive
      Archive --> Response((Response))

When it comes to the main site (Ritherdon Archive), it stores the archive data in the /storage directory and the SQLite3 database. Both are kept in-sync. by the main site – as part of its feature-set.

  graph TD
      Request((Request \n /Response)) <--> Server
      Server{Nginx} <--> Archive
      Archive <-.-> DB[(Database)]
      Archive <-.-> Storage[/Files in /storage directory/]

Installation

To see what is being called, please read the makefile. If you are unsure how to set-up an environment for developing in Common Lisp, please use the following link:

Otherwise, just use the makefile.

  git clone https://git.abbether.net/return-to-ritherdon/ritherdon-archive.git
  cd ritherdon-archive
  sudo make install
  make lisp-install
  make quicklisp-add
  make search-install # Installs Meilisearch.

Note: The make search-install command adds the meilisearch binary to /usr/bin/. If you want to uninstall Meilisearch, you will need to delete it from /usr/bin. Run sudo rm /usr/bin/meilisearch, to delete it.

Run System on Local Machine

Because the system consists of two systems running in tandem, you will need to have two terminals open to run them separately – and see the logs for each service.

Meilisearch

Usually, you get this part of the system up and running before you get the main site working – mostly because of the tasks flow easier – but it's not essential to start this service first.

  # Make sure meilisearch is added to your /usr/bin/ directory.
  meilisearch --no-analytics

If you enter http://localhost:7700 in your browser, you should see the meilisearch search page. Use ctrl-c to stop the service.

Main Site (Ritherdon Archive)

To run the main site (Ritherdon Archive), start Steel Bank Common Lisp (SBCL) by running rlwrap sbcl in your terminal. When SBCL has finished loading, run the following,

  (ql:quicklisp :ritherdon-archive)
  (search:set-filter-attributes) ; Configures the Meilisearch service.
  (ritherdon-archive:start :server :woo)

Then go to http://localhost:5000 in your browser.

To stop the program, enter (ritherdon-archive:stop) in SBCL.

Run System on (Prod.) Server

This section builds on the one above (running on local machine). The main difference is getting the system to run on Nginx and as a Systemd service.