ScentGraph is a project for Helsinki University Full Stack course. In 2020 it my Full Stack course project, and in 2023 it was used as a base for Full Stack Part 11 exercise 11.20. ScentGraph is done using React and TypeScript for the front end, Node and TypeScript for the backend and Neo4J for graph database. The web application is hosted in Heroku. The database queries are done using Cypher. GitHub actions are used for CI and automated testing.
In ScentGraph users can add scents to the database. The scents can belong to various categories and the relations of scents, their categories and several scent properties can be visualized in a graph form.
ScentGraph has basic and admin users, and basic users can be created in the application. Admin users of ScentGraph can add properties that can be used in the scent creation.
I have used Fragrantica as a big source for inspiration for the idea, terms and structure of this application, so big thanks for the Fragrantica community for their excellent site and blogs.
For this application an Aura DB instance should be running. You should also have .env file where url, username and password for Aura DB are defined:
AURA_BOLT_URL = neo4j+s:https://yourdbidentifier.databases.neo4j.io
AURA_USER = neo4j
AURA_PASSWORD = supersecretpassword
More details for setting up the database for ScentGraph can be found in the database.md.
After cloning the repository these commands can be used in the repository root. The project works at least with the Node version v12.22.3.
Install dependencies:
npm install
Start application in dev mode:
npm run start-dev
At the moment some server and client helper functions are being unit tested. Also there is one route integration test. To run the integration test, an Aura DB instance should be running. The application frontend use has been manually tested on Crome browser, and there is a very simple browser test done with cypress.
To run tests against an Aura DB Neo4j:
npm run test-dev
To run browser tests with the GUI:
npm run cypress-open
To run browser tests with the CLI:
npm run cypress-run
To run lint check:
npm run lint