LucidPlan - Manual & Documentation

Table of Contents

status.svg GNU-Guix-c48702.png Scheme-Guile-d0730f.png

You are reading the manual for LucidPlan.

LucidPlan is the free and open project management for everyone

This manual documents the LucidPlan project, its functionalities and how to use it, host it yourself, and do related system administration tasks.

LucidPlan is a project management for teams of all sizes and jobs.

This is a flexible system made to simplify everyone's life, accessbile to all kinds of users and help you be more #agile in all your endeavours.

If you like my work, please support me by buying me a cup of coffee ☕ so I can continue with a lot of motivation.

LucidPlan enhances the use of Agile work methodologies in teams due to its fast-paced no nonesense-workflows and customizability, also thanks to being written in Lisp (GNU Guile Scheme language).

This tool is the fruit of years of experience using bloated proprietary systems like Jira/Trello, and experiencing the insane frustrations they bring.

Visit my instance of LucidPlan here: https://lucidplan.jointhefreeworld.org/

This is free software (free as in freedom), licensed under the GNU General Public License v3 or newer.


Lucidplan is powered by: Guile Scheme, GNU Artanis, SQLite, Tailwind CSS, GNU Make, Emacs

LucidPlan and Artanis are written using GNU Guile, one of the best implementations of Scheme language.

logo-small.jpg


Code of conduct

This project adheres to the jointhefreeworld code of conduct. Find it here:

https://jointhefreeworld.org/blog/articles/personal/jointhefreeworld-code-of-conduct/index.html

In summary, we foster an inclusive, respectful, and cooperative environment for all contributors and users of this free software project. Inspired by the ideals of the GNU Project, we strive to uphold freedom, equality, and community as guiding principles. We believe that collaboration in a community of mutual respect is essential to creating excellent free software.


Lucidplan Project

Contributing to free software is a uniquely beautiful act because it embodies principles of generosity, collaboration, and empowerment.

We welcome everyone to feel invited to the lucidplan Project, and encourage active contribution in all forms, to improve it and/or suggest improvements, brainstorm with me, make it more modular/flexible, etc, feel free to contact me <jjbigorra@gmail.com> to chat, discuss or report feedback.

Find here the Backlog and Kanban boards for lucidplan: https://lucidplan.jointhefreeworld.org/tickets/lucidplan


Authentication

LucidPlan requires an authenticated session for performing administrative tasks such as creating/deleting jobs and profiles.

Upon starting a blank new lucidplan deployment you will have no users in the database.

Check in db/migration and edit the password field, or add more users. An important note is that currently authentication works by using the username (NOT email) and the passwords should NOT contain any special characters.

Then do a guix shell -m manifest.scm -- art migrate up user to add your users.


Practical usage tips

Using LucidPlan is made to be easy and simple, however, here follow some tips that might help you out:

In any title or description field you can use the Org mode syntax (like in the Emacs mode) and LucidPlan will automatically convert your markup to pretty HTML.


Running LucidPlan

If you are thinking of running LucidPlan yourself and hosting it on your own here follow some tips.

Firstly, make sure you use the Guix package manager, whether as a standalone distro (Guix system) or on top of any other GNU/Linux distribution.

I include a manifest.scm in the repo so that it's easy to run the project if you use the Guix package manager.

If you want to run without Guix you should check that manifest.scm anyway since it will give you exactly the packages that you need.

Then, you will need a database to be present in the root folder of the project (alongside app, lib, etc.).

LucidPlan uses SQLite by default but is also compatible with PostgreSQL and MySQL.

You can automate the creation of the database and the enabling of WAL mode for concurrent writes with make init-db.

You should then look at db/migration folder and edit the migration for the user table to your liking.

Then do a guix shell -m manifest.scm -- art migrate up user to add your users.

If you are hacking away at the project, I would suggest using make dev since this will effectively run the project with hot-reloading capabilities and it will use the default artanis.conf where we configure hostname, db path, etc.

If you are hosting this for production, I would suggest running LucidPlan as a Shepherd service/daemon. You can alternatively just feel free to do this any other way, I recommend using the manifest.scm . Check the Makefile for more.

Here follows an example of a Guix (Shepherd service):

(define-module (wolk-jjba lucidplan)
  #:use-module (gnu)
  #:use-module (guix))

(use-service-modules shepherd)

(define-public (wolk-jjba-lucidplan-service config)
  (list (shepherd-service (documentation "Run lucidplan as a daemon")
                          (provision '(lucidplan))
                          (requirement '())
                          (start #~(make-forkexec-constructor '("make"
                                                                "production-server")
                                    #:directory
                                    "/etc/lucidplan/job-clone/lucidplan/trunk"
                                    #:environment-variables '("GUILE_LOAD_PATH=/run/current-system/profile/share/guile/site/3.0"
                                                              "GUILE_DBD_PATH=/run/current-system/profile/lib"
                                                              "C_INCLUDE_PATH=/run/current-system/profile/include"
                                                              "GUILE_LOAD_COMPILED_PATH=/run/current-system/profile/lib/guile/3.0/site-ccache:/run/current-system/profile/share/guile/site/3.0"
                                                              "LIBRARY_PATH=/run/current-system/profile/lib"
                                                              "GIT_SSL_NO_VERIFY=1"
                                                              "PATH=/run/privileged/bin:/run/current-system/profile/bin:/run/current-system/profile/sbin")))
                          (stop #~(make-kill-destructor))
                          (auto-start? #t)
                          (respawn? #t))))

(define-public wolk-jjba-lucidplan-service-type
  (service-type (name 'lucidplan)
                (description "Run lucidplan as a daemon")
                (extensions (list (service-extension
                                   shepherd-root-service-type
                                   wolk-jjba-lucidplan-service)))
                (default-value '())))



On accessibility

We believe creating accessible websites for everyone, including people with disabilities, is crucial for equality, helps provide a good user experience.

Lucidplan chooses lots of its UI to appeal to the widest public possible by default, but is very configurable to allow extensibility.


On GNU Artanis

Find the documentation for Artanis here: https://www.gnu.org/software/artanis/manual/

GNU Artanis is the first production-level modern Web framework of Scheme programming language.

It is designed and maintained to be robust, fast, and easy to use for professional web development.

Here lies not just a framework, but a canvas where your ideas take flight with remarkable speed and grace. Artanis isn't about wrestling with complexity; it's about the joy of creation.

It's about harnessing the power of a robust and mature language to build something truly your own, something beautiful, nimble, flexible, powerful, efficient, understandable and maintainable. GNU Artanis was Certificated as Awesome Project at 2013 Lisp in summer projects.

One day, the folks at GNU were discussing what language they would write the GNU website in - and many chose Python. But I found that strange, because the official extension language of GNU is GNU Guile. And I wondered aloud - why not start a brand new project to provide a web framework written with GNU Guile? To which RMS said, "It's cool, I like this idea."

But at that time, it was just an idea without a plan.

Fortunately, a few months later, the Guile community held a hack-potluck to celebrate Guile2 turning two - which is a contest to write a cool program in a few weeks. And so, Artanis was born. History

February 2013 - Artanis born at the GNU Guile hack-potluck. 2013 - Artanis submitted to "Lisp In Summer Projects" contest. Received "Certificated awesome project award" in 2014. 1st January, 2015 - the first stable version Artanis-0.0.1 was released. 19th January, 2015 - offers Artanis to FSF/GNU, and RMS inducts it as an official GNU project. Artanis becomes GNU Artanis. 29 December 2021 - GNU Artanis donates to HardenedLinux community to connect with product environment more tightly.


Author: Josep Bigorra

Created: 2025-05-12 ma 15:23

Validate