Giter Site home page Giter Site logo

katsuyu / area Goto Github PK

View Code? Open in Web Editor NEW

This project forked from jeremylvln/area

1.0 0.0 0.0 28.02 MB

A IFTTT clone, an Epitech school project.

License: MIT License

JavaScript 18.38% Dockerfile 0.16% TypeScript 56.45% Kotlin 0.10% Ruby 0.80% Swift 0.09% Objective-C 0.01% Dart 22.04% HTML 0.42% CSS 1.54%

area's Introduction

Zia Test License

Introduction

AREA is an Epitech school project. We had to recreate the environment of IFTTT, with a backend, a web frontend and a module frontend.

How to use

This project use Docker and docker-compose to be served. The only thing you have to do is running:

$ docker-compose up -d --build

You can download the APK file of the application on the webapp under the /client.apk route.

Folder architecture

We have 3 subprojects in this repository:

  • Server (under backend) which act as the master node of the application. It contains all the logic of the actions and reactions.
  • Website front-end (under webapp) which expose a website to interact with the AREA.
  • Mobile front-end (under mobileapp) which expose a mobile application to interact with the AREA.

Technical choices

The backend is devepped in TypeScript with the NestJS framework. Thanks to its conception rules, we can isolate the different part of the application. This way, we have been really fast to implement a lot of functionalities. Also, because we can isolate the parts, we can test them separatly.

We took several directives in this subproject:

  • Use PassportJS to perform OAuth related logins
  • Use existing packages to interact with APIs, if possible
  • Always create a test case when creating an action or a reaction

In our database, the actions and reactions are pretty the same thing. That's why there is a CRUDObject class which bring together the common properties and methods. Under this there is a Action and Reaction class which expose :

  • a test function for the action (which returns a boolean if the predicate passes)
  • an apply function for the reaction

Finally, to create a new action or reaction, we just have to create a dedicated file and import it in the modules.module.ts file.

Either for an action or a reaction, you must create:

  • a DTO (aka. a representation of the form the clients will POST to create/modify the entity)
  • an Entity (aka. the database model, containing the configuration)
  • the Action or Reaction instance containing all the information needed
    • the method authTokenProvider is optional but permits to indicate that this object works with special credentials the user must provide in order to use it

Backend UML

UML

Usage of mobile app

Mobile

License

See LICENSE.

Authors

area's People

Contributors

jeremylvln avatar

Stargazers

Damien Bernard 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.