With this app you can create your own art gallery with artworks from various museums.
The main purpose of this project is to investigate how to build a web application that
- follows the Jamstack architecture best practices (in a nutshell: full CI/CD and no server side database).
- handles a lot (tens of megabytes) of structured data.
- performs well according to measurement tools like Lighthouse.
Currently the web app is deployed at https://rednaw.github.io/exhibitionDB/.
At this moment the app implements the following use cases.
Datamodel of the database created from FileMaker exports (not the databases created from Museum API's, those are separate and not integrated in this model yet)
A breakdown of the various technologies and projects on which this project depends ordered by where in the deployment overview they are used.
- Computer Modern: Computer Modern is the family of typefaces developed by Donald Knuth for TeX.
- Interactjs: JavaScript drag and drop, resizing, and multi-touch gestures for modern browsers.
- Javascript: The only programming language that runs in all browsers.
- LocalForage: Deal with getting and setting bulk data in the browser offline store.
- svelte-asyncable: Super tiny, declarative, optimistic, async store for Svelte.
- svelte-i18n Internationalization library for Svelte.
- svelte-select: A select/autocomplete component for Svelte.
- svelte-simple-modal: A simple, small, and content-agnostic modal for Svelte.
- svelte-toggle: Accessible toggle switch component for Svelte.
- sql.js: A javascript SQL database, it allows creating a relational database and querying it entirely in the browser.
- Tabulator: Data visualisation using interactive tables.
- zip.js: A JavaScript library to zip and unzip files in the browser and Deno.
- GitHub Pages: Static site hosting service that takes files straight from a repository on GitHub.
- GitHub Actions: Automate tasks within the software development life cycle.
- Checkout: GitHub action to check-out the repository so the workflow can access it.
- github-pages-deploy-action: GitHub action that pushes generated files to production.
- SQLite: SQLite is a C-language library that implements a small, fast, self-contained SQL database engine.
- curl: Command line tool and library for transferring data with URLs
- csv-to-sqlite: A script that copies CSV files into a SQLite database.
- zip: package and compress (archive) files
- npm: Javascript dependencymanager and script runner.
- Svelte: Static Site Generator for reactive user interface.
- Rollup: Bundle generated html, css and javascript to a small number of compressed files.
- Jekyll: Static Site Generator for Markdown generated documentation HTML.
- jekyll-action-ts: GH action for running Jekyll.
- ESLint: Static analysis, detects basic code smells.
- Lighthouse: Collect runtime performance metrics and insights on developer best practices.
- Lighthouse CI: Run asserts against Lighthouse analysis results.
- Metropolitan Museum API: Data on artworks in the museum collection.
- The Art Institute of Chicago API: Historical data on art exhibitions held in the museum.
- Rijksmuseum API: Data on artworks in the museum collection.
- GitHub: Version control, this project. Stores code and Filemaker dumps.
- Dependabot: Automated dependency updates
- Filemaker: Manual data entry