Skip to content

πŸ”Ž CaptainFact - API. The one that serves and process all the data for https://captainfact.io

License

Notifications You must be signed in to change notification settings

CaptainFact/captain-fact-api

This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

e182aaf Β· Dec 29, 2018
Dec 29, 2018
Jan 16, 2018
Dec 20, 2018
Nov 5, 2018
Jul 31, 2018
Dec 19, 2018
Sep 24, 2018
Dec 19, 2018
Aug 27, 2018
Nov 5, 2018
Aug 22, 2018
Dec 24, 2018
Nov 5, 2018
Nov 10, 2018

Repository files navigation

Discord AGPL3 Coverage Status




Install & Run

Prerequisites

You need to install Elixir. We recommand using asdf. Check their documentation on how to install it, then run asdf install from root captain-fact-api folder.

Start DB

Create / launch a postgres instance on your local machine. If you have docker installed, you can use the pre-seed postgres docker image:

docker run -d --name cf_dev_db -p 5432:5432 captainfact/dev-db:latest

Start API

  • mix deps.get --> Get dependencies
  • mix ecto.migrate --> Migrate DB
  • iex -S mix --> Start project

Following services will be started:

You can also see all the mail sent by going to http://localhost:4000/_dev/mail

Other useful commands

  • mix test --> Run tests
  • mix test.watch --> Run tests watcher
  • mix format --> Format code
  • mix ecto.gen.migration [migration_name] --> Generate migration

Project architecture

This application is organized as an umbrella project which allows us to divide CaptainFact API into small apps.

.
β”œβ”€β”€ apps
β”‚   β”œβ”€β”€ cf => Core functions as a library. **Not deployed**
β”‚   β”œβ”€β”€ cf_atom_feed => Atom feed.
β”‚   β”œβ”€β”€ cf_graphql => GraphQL API (public).
β”‚   β”œβ”€β”€ cf_jobs => Jobs.
β”‚   β”œβ”€β”€ cf_opengraph => An app that generate opengraph tags.
β”‚   β”œβ”€β”€ cf_rest_api => REST/WS API (private).
β”‚   └── db => DB repository and schemas **Not deployed**
β”‚       β”œβ”€β”€ lib
β”‚       β”‚   β”œβ”€β”€ db
β”‚       β”‚   β”œβ”€β”€ db_schema => Contains all the schemas (Video, Speaker, Comment...etc)
β”‚       β”‚   β”œβ”€β”€ db_type => Special types (SpeakerPicture...etc)
β”‚       β”‚   └── db_utils => Some utils functions
β”‚       └── priv
β”‚           └── repo/migrations => All DB migrations files
β”œβ”€β”€ README.md => You're reading it right now. Are you?
β”œβ”€β”€ rel => Release configs & tools
β”‚   β”œβ”€β”€ commands => Commands that will be available to run on the release (seed DB...etc)
β”‚   β”œβ”€β”€ hooks => Some hooks for automatically run commands when release run.
β”‚   β”œβ”€β”€ runtime_config => Runtime configurations for all apps.
β”‚   └── config.exs => Releases configuration.

Linked projects