#+title: dev.metalisp.survey #+author: Marcus Kammer #+email: marcus.kammer@metalisp.dev * dev.metalisp.survey ** Introduction I am developing a simple web application in Common Lisp that facilitates the execution of the System Usability Scale (SUS) questionnaire. This app allows users to easily conduct usability evaluations by presenting the standard SUS questions and collecting responses. The goal is to streamline the process of gathering and analyzing usability feedback. The survey software developed aims to simplify the creation, administration and integration of questionnaires into existing websites or software systems. The use of flexible templates should enable a high degree of reusability and adaptability of the survey components. Users can easily combine and analyze data from multiple questionnaires within a single study, leading to a deeper understanding of the collected data. The software is self-hosted, which means that the data is stored on its own servers. This approach reinforces data protection and gives users complete control over their data, which is particularly important for data-sensitive areas. Through these features, the survey web application strives to make a valuable contribution to research projects, market research and other application areas where accurate data collection and analysis is crucial. *** Design Goals - Integrate questionnaires into your own website or software: The software enables seamless integration of questionnaires into existing digital environments to improve user experience and simplify data collection. - Reusability through templates: Through customizable templates, the software offers an efficient solution for creating repeatable and consistent survey formats for various use cases. - Ability to combine data from multiple questionnaires into one study: Users can merge and aggregate data from different questionnaires to provide more comprehensive insights and analysis in a single study. - Data protection through self-hosting: The self-hosting option ensures complete data control and strengthens data protection as sensitive information does not need to be transferred to external servers. ** Dependencies - https://github.com/edicl/hunchentoot - https://git.sr.ht/~marcuskammer/dev.metalisp.sbt ** Mailing list - https://lists.sr.ht/~marcuskammer/dev.metalisp.survey ** Issue tracker - https://todo.sr.ht/~marcuskammer/dev.metalisp.survey ** News Feed - https://git.sr.ht/~marcuskammer/dev.metalisp.survey/log/main/rss.xml ** Installation instructions *** 1. Install a Common Lisp implementation - Ensure you have a Common Lisp implementation installed. Common options include SBCL (Steel Bank Common Lisp) and CCL (Clozure Common Lisp). You can download and install them from their respective websites: - [[http://www.sbcl.org/][SBCL]] - [[https://ccl.clozure.com/][CCL]] *** 2. Set up ASDF - ASDF is typically bundled with modern Lisp implementations. However, if it's not present, you can download it from [[https://gitlab.common-lisp.net/asdf/asdf][ASDF's repository]]. *** 3. Organize the project directory - Place the =dev.metalisp.survey= project in the =~/common-lisp= directory. Ensure the directory structure looks like this: #+BEGIN_EXAMPLE ~/common-lisp/ └── dev.metalisp.survey/ ├── dev.metalisp.survey.asd └── src/ └── app.lisp #+END_EXAMPLE *** 4. Configure ASDF to find the project - Open your Common Lisp REPL and run the following commands to set up the ASDF central registry: #+BEGIN_SRC lisp ;; Ensure ASDF is loaded (require :asdf) ;; Add ~/common-lisp to the ASDF central registry (push #p"~/common-lisp/" asdf:*central-registry*) #+END_SRC *** 5. Load the project - In your REPL, load the project by running: #+BEGIN_SRC lisp (asdf:load-system :dev.metalisp.survey) #+END_SRC *** 6. Run the project - After loading the system, you can run the main function or entry point of the project. =ml-survey:start=, you would execute: #+BEGIN_SRC lisp (ml-survey:start) #+END_SRC *** Optional: Example Initialization in .sbclrc To make the ASDF configuration persistent across REPL sessions, you can add the setup to your =.sbclrc= file: 1. Edit =.sbclrc= - Open (or create) the =.sbclrc= file in your home directory and add the following lines: #+BEGIN_SRC lisp (require :asdf) (push #p"~/common-lisp/" asdf:*central-registry*) #+END_SRC 2. Reload SBCL - The next time you start SBCL, it will automatically include the =~/common-lisp= directory in the ASDF central registry. ** License MIT