Giter Club home page Giter Club logo

backend's Introduction

logo

Backend ๐Ÿ‘‹

Elixir CI

New Organizations for the planet regeneration. Clear Objectives. Impactful Collaboration.

For more information on us:

Table of Contents

General Information

Welcome to the Application that serves as one of the backends for the Cambiatus Ecosystem, One of the backends since this is the one that contains the data in a manner than is easy to index and search.

In the context of the diagram below which is a high level view of how the data flows in our application this application serves as the datastore using a Postgres db and as the API using Phoenix running a Graphql Server

Dataflow

Cambiatus Data Flow

At a high level this is a database that is synced to events on an blockchain which then presents a Graphql API that makes it simpler to consume the information from the blockchain. At the moment this is a normal database with the the usual CRUD actions however creation and updating happens as a result of events that trigger writes and updates to our database.

The intention down the line is to make this database a write only database in an Event Sourced structure which will enable us to replay events and give us much more observability.

Technologies

Here we have information on the type of technologies we use on our project, enjoy!

Language & Framework

  • Elixir language main documentation page
  • Phoenix framework main documentation page

Query language

Here are some notable packages related to GraphQL:

  • Ecto is Elixir's database wrapper that works around GraphQL

  • Absinthe package GraphQL toolkit for Elixir

Here is our GraphQL wiki page

Databases

Development Environment Setup

To build and run this application locally follow the following steps!

Step 1

Clone this repository by running

git clone [email protected]:cambiatus/backend.git

Step 2

Change into the new repository directory by running

cd backend

Step 3

The system uses ImageMagick for ensuring that the process of image uploads runs properly and Mogrify (dependency package) is dependent on this. Here are instructions for installing it.

Install dependencies by running

mix deps.get

Step 4

Create a database by running

mix ecto.create

Note: you may need to change the database user and password variables values in the config/test.exs and config/dev.exs to ensure proper connection with Postgres.

Then, run the current database migrations using

mix ecto.migrate

Step 5

Once the ecto migration is done successfully, run tests via the test command below

mix test

Note: Ideally the test results should exit with a status of 0 failed tests

Step 6

Lastly, run the server using the following command

mix phx.server

Now you can visit localhost:4000 from your browser.

#Boom! Now you can hack away!

Contributing

When you are ready to make your first contribution please check out our Contribution guide, this will get your up to speed on where and how to start.

Once done with the contributing guide, here are some developing tips to help you:

Code Formatting

  • To ensure code consistency we use linter testing, static code analysis for the approval of our Pull Requests. Always run mix credo before pushing your commits.

  • Another critical formatting command is mix format, which formats a specific file according to the Elixir language formatting rules command. There are IDE specific extensions and settings that you could use to have automated formatting. Here is one Elixir vscode example for this.

Files To Not Commit Changes

Changes related to local Postgres database credentials must not be commited to the repo

Here one way of how to not commit changes related to your local database connection credentials (user & password) to dev.exs and text.exs files:

  • After you finished working on a development and before you commit your changes, select dev.exs and text.exs files on your IDE or Git Desktop.
    • IF the only changes to these files are related to the local database connection credentials.

      • Then, revert all the changes on these two files (dev.exs and text.exs).
    • ELSE

      • ONLY revert the changes related to the local database connection credentials on these two files (dev.exs and text.exs).
    • HERE is another alternative using the exclude command.

Additional Resources

  • Here is our Frontend (Elm) repo. We use Elm which is an awesome functional language to play with!

  • Here is our Smart Contract (EOS) repo. We use EOS which is an awesome blockchain and uses C++ as language to play with!

  • Our wiki page has several development resources to help you during your collaboration.

backend's People

Contributors

lucca65 avatar zacck avatar skyleite avatar amiskov avatar victorgdev avatar venomnert avatar vitorleal avatar gustavonmartins avatar newdev42 avatar alissonfpmorais avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.