An open API service indexing awesome lists of open source software.

https://github.com/lies-exposed/lies.exposed

A chronological tracking of lies perpetrated against humanity.
https://github.com/lies-exposed/lies.exposed

collective-knowledge docker fp-ts impact journalism society typescript

Last synced: 4 months ago
JSON representation

A chronological tracking of lies perpetrated against humanity.

Awesome Lists containing this project

README

          

# lies.exposed

![GitHub issues](https://img.shields.io/github/issues/lies-exposed/lies.exposed)
![GitHub pull requests](https://img.shields.io/github/issues-pr/lies-exposed/lies.exposed)

![GitHub Workflow Pull Request Status](https://img.shields.io/github/actions/workflow/status/lies-exposed/lies.exposed/pull-request.yml?label=Pull%20Request)
![GitHub Workflow Release Please Status](https://img.shields.io/github/actions/workflow/status/lies-exposed/lies.exposed/release-please.yml?branch=main&label=Release)

---

## Project Structure

The project is built using `pnpm workspaces` and divided in `packages` and `services`.

### Packages

Packages contains all the common code used in `services`.

- [@liexp/core](./packages/@liexp/core/README.md) contains all the core modules
- [@liexp/shared](./packages/@liexp/shared/README.md) contains domain specific definitions for `models` and `endpoints`
- [@liexp/test](./packages/@liexp/test/README.md) contains some test utils
- [@liexp/ui](./packages/@liexp/ui/README.md) contains all `ui` components

### Services

The `services` are the deployable projects:

- [admin](./services/admin/README.md)
- [api](./services/api/README.md)
- [storybook](./services/storybook/README.md)
- [web](./services/web/README.md)

### Develop

The local development require some modules to be installed on your machine:

- node
- pnpm
- docker
- docker compose

The easiest way to run the project is by using `docker compose`.
The [compose.yml](./compose.yml) contains all the definitions to run the needed services.

If you want to start developing with `docker compose`:

```sh
docker compose build # build base image
docker compose up -d db # starts db in background
docker compose up api web admin data # starts api, web, admin and data services
```

**N.B.: you need to run `pnpm api watch` in another shell to make the api container to trigger restart event**

### Local HTTPS Development

Services run behind an nginx reverse proxy on `*.liexp.dev`. To avoid browser
SSL warnings you need a locally-trusted self-signed wildcard certificate.

**Prerequisites:** `openssl` and (Linux only) `certutil` from `nss-tools` /
`libnss3-tools`.

```sh
# Generate certificate and trust it in Chrome, Firefox, and system CA store
./scripts/dev-ssl-certificate.sh
```

The script:
- Generates `_data/certs/liexp.dev.crt` and `_data/certs/liexp.dev.key`
- **macOS**: adds the cert to the system Keychain (trusted by Chrome/Safari)
- **Linux**: adds the cert to `~/.pki/nssdb` (Chrome), all Firefox profiles, and
the system CA store via `update-ca-trust` / `update-ca-certificates`

After running, reload nginx so it picks up the new certificate:

```sh
docker compose -f compose.reverse-proxy.yml up -d reverseproxy.dev
```

> **Note (Linux/Chrome):** restart Chrome after running the script for the
> change to take effect.

### Build

```sh
pnpm build
```

### Run with docker

Build the images first with

```sh
# build `base`, `api` and `web` image
./scripts/docker-build.sh
```

```sh
# start docker compose for `deploy/compose.yml`
./scripts/docker-deploy-test.sh
```

https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/do-more-with-tunnels/local-management/create-local-tunnel/