🔎 CaptainFact - API. The one that serves and process all the data for https://captainfact.io
You need to install Elixir. We recommand using asdf-vm. Check their documentation on how to install it, then run
asdf installfrom root
Create / launch a PostgreSQL instance on your local machine. If you have Docker installed, you can use the pre-Seed PostgreSQL Docker image:
docker run -d --name cf_dev_db -p 5432:5432 captainfact/dev-db:latest
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 e-mail sent, by going to http://localhost:4000/_dev/mail
mix test--> Run tests
mix test.watch--> Run test watcher
mix format--> Format code
mix ecto.gen.migration [migration_name]--> Generate migration
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_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 utility 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 => Release configuration.