# Tricoteuses Legal Explorer

## _Library, Web API & site to browse legal open data from French Direction de l'information légale et administrative (Dila)_

_Tricoteuses Legal Explorer_ is free and open source software.

- [software repository](https://git.en-root.org/tricoteuses/tricoteuses-legal-explorer)
- [GNU Affero General Public License version 3 or greater](https://git.en-root.org/tricoteuses/tricoteuses-legal-explorer/blob/master/LICENSE.md)

Legal data sources:

- https://www.dila.premier-ministre.gouv.fr/repertoire-des-informations-publiques/les-donnees-juridiques
- DOLE: https://echanges.dila.gouv.fr/OPENDATA/DOLE/
- JORF: https://echanges.dila.gouv.fr/OPENDATA/JORF/
- KALI: https://echanges.dila.gouv.fr/OPENDATA/KALI/
- LEGI: https://echanges.dila.gouv.fr/OPENDATA/LEGI/

Main definitions used by these data: https://www.legifrance.gouv.fr/contenu/Media/files/lexique-api-lgf.docx

## Installation

### Create database

Using Debian GNU/Linux, install PostgreSQL, then:

```sh
sudo su - postgres
createuser legi -P # and enter the password
createdb -O legi legi
psql legi
  CREATE EXTENSION IF NOT EXISTS pg_trgm;
\q
exit
```

### Install dependencies

```sh
npm install
```

## Server Configuration

Create a `.env` file to set configuration variables (you can use `example.env` as a template). Then:

```sh
npm run configure
```

## Datasets Initialization

```sh
mkdir -p ../dila-data/dole
cd ../dila-data/dole
git init
cd -

mkdir -p ../dila-data/jorf
cd ../dila-data/jorf
git init
cd -

mkdir -p ../dila-data/kali
cd ../dila-data/kali
git init
cd -

mkdir -p ../dila-data/legi
cd ../dila-data/legi
git init
cd -
```

## Datasets Update

```sh
npx tsx src/scripts/download_dila_dataset.ts dole ../dila-data/
npx tsx src/scripts/download_dila_dataset.ts jorf ../dila-data/
npx tsx src/scripts/download_dila_dataset.ts kali ../dila-data/
npx tsx src/scripts/download_dila_dataset.ts legi ../dila-data/
```

## Database Update

```sh
npx tsx src/scripts/import_dole.ts ../dila-data/
npx tsx src/scripts/import_jorf.ts ../dila-data/
npx tsx src/scripts/import_kali.ts ../dila-data/
npx tsx src/scripts/import_legi.ts ../dila-data/

# Note: Assemblee database must be updated before launching this script:
npx tsx src/scripts/associate_dossiers_legislatifs_with_assemblee.ts
```

## Server Launch

In development mode:

```sh
npm run dev
```

In production mode:

```sh
npm run build
npm run preview
```

### Package Generation & Publishing

```sh
npm version patch # or major or minor
npm run package
npm publish
```