/Theses

Theses is a web application project for the second year of my computer science degree, allowing real-time filtered search and statistics display on PhD data in France.

Primary LanguageTypeScript

Theses

Setup

You first need to install the latest LTS version of Node.js and Docker.

In the database folder, create a res directory and put in it:

  • the CSV file containing all the theses, named theses.csv
  • a JSON file containing all the institutions, named institutions.json.

Next, go to the back directory and create a .env file. You should put 4 variables in it: REDIS_URL, REDIS_AUTH, MEILISEARCH_URL and MEILISEARCH_AUTH. Make sure to keep them secret. This will be the variables that you'll have to put instead of the placeholder below when you'll start these MeiliSearch and Redis.

Copy this .env file to the database folder.

Create a .env.development and / or a .env.production file depending on your context in the front folder and put the variable GATSBY_API_URL in it.

Once done, open a new terminal anywhere on your disk. It's where the MeiliSearch executable will be stored, as well as the data in it (data.ms folder). You'll have to run a bunch of commands:

$ sudo apt update
$ sudo apt upgrade
$ sudo apt install curl
$ curl -L https://install.meilisearch.com | sh
$ ./meilisearch --master-key=YOUR_MEILISEARCH_AUTH

This will start MeiliSearch. Leave this terminal open, and in another terminal, run the following command:

$ curl \
  -X POST 'http://localhost:7700/indexes/theses/settings/filterable-attributes' \
  -H 'Content-Type: application/json' \
  -H 'X-Meili-API-Key: YOUR_MEILISEARCH_AUTH' \
  --data-binary '[
      "presentation_date",
      "finished",
      "institution_id"
  ]'

In the project folder (where are located the front, database and back folder), run the following command to start Redis:

sudo docker run --rm -v "$PWD/database/mounted/redis.conf:/redis/redis.conf" -v "$PWD/database/mounted:/data" -p 6379:6379 --name redis-theses redislabs/rejson:latest redis-server /redis/redis.conf --requirepass YOUR_REDIS_AUTH

In both the front, the database and the back folders, run:

npm install

In the database folder, run the command

npm run import

This will import the data set in Redis and MeiliSearch. The Redis part is pretty quick, but you'll have to be patient for the MeiliSearch part, because it can take a few minutes to complete.

Once everything is done, run the following command in both the front and the back folder:

npm run dev

And the website should be available in development mode at localhost:8000.

To create an optimized and production ready version of the front end, run:

npm run build

The output will be in the public folder.