Git Product home page Git Product logo

devdbrandy / ireporter Goto Github PK

View Code? Open in Web Editor NEW
2.0 2.0 2.0 3.88 MB

iReporter app enables users (citizen) to bring any form of corruption to the notice of appropriate authorities and the general public

Home Page: https://irepot.herokuapp.com

License: MIT License

CSS 12.32% HTML 40.78% JavaScript 46.90%
corruption notice intervention development citizen citizen-participation rest-api

ireporter's Introduction

iReporter

Overview

iReporter app enables users (citizen) to bring any form of corruption to the notice of appropriate authorities and the general public. Visit iReporter live demo: https://devdbrandy.github.io/iReporter.

Demo Users

Username Password Access
admin secret Admin Access
user123 secret User Access

1. ๐Ÿš€ Getting Started

1.1 Prerequisites

Ensure that you have the following installed on your local machine:

1.2. Run locally

  • To run app locally, make sure you have nodejs, postgres installed.

  • Clone repository or clone your own fork

      git clone https://github.com/devdbrandy/iReporter.git
      cd iReporter
      cp .env.example .env
      npm install
  • Create a PostgreSQL database for the project via pgAdmin or run the below command on your terminal:

      createdb -h localhost -p 5432 -U postgres ireporter
  • Configure .env environment variable with your credentials

  • Run migration npm run migrate

  • (Optional) Seed dummy data npm run db:seed

  • Two npm scripts are availiable to spin up the app server:

    • npm run dev spin up the server without watching for any file changes
    • npm run watch watches for any file changes and reloads the server

1.3. Building

npm run build

1.4. Test Locally

To test or consume api locally, you can make use of Postman or Insomnia

1.5. Running Test

Test specs are implemented using mocha + chai + sinon.

Make a duplicate of .env and rename to .env.test, then configure your test credentials.

Two npm scripts are available to run the test suite:

  1. npm run mocha or npm run mocha:watch - The later watches for any file changes and runs the full test suite (without code coverage)
  2. npm test - Performs a single full test suite run, including instanbul code coverage reporting. Summary coverage reports are written to stdout, and detailed HTML reports are available in /coverage/index.html

2. ๐Ÿ”’ Authentication

Access to restricted API endpoints requires an access token, iReporter uses access tokens to associate API requests with your account. To obtain your access token, make a request along with username and password credentials to https://irepot.herokuapp.com/auth/login

Sample Response:

POST https://irepot.herokuapp.com/auth/login
HTTP/1.1
Accept: application/json

HTTP/1.1 200 OK
Content-Type: application/json

{
  "status": 200,
  "data": [
    {
      "token": "...",
      "user": {}
    }
  ]
}

3. API Versioning

The second part of the URI specifies the API version you wish to access in the format v{version_number}. For example, version 1 of the API (most current) is accessible via:

  https://irepot.herokuapp.com/api/v1

4. HTTP Requests

All API requests are made by sending asecure HTTPS request using one of the following methods, depending on the being taken:

  • POST Create a resource
  • PATCH Update a resource
  • GET Get a resource or list of resources
  • DELETE Delete a resource

For POST and PATCH requests, the body of your request may include a JSON payload.

5. HTTP Response Codes

Each response will be returned with one of the following HTTP status codes:

  • 200 OK The request was successful
  • 400 Bad Request There was a problem with the request (security, malformed)
  • 401 Unauthorized The supplied API credentials are invalid
  • 403 Forbidden The credentials provided do not have permissions to access the requested resource
  • 404 Not Found An attempt was made to access a resource that does not exist in the API
  • 500 Server Error An error on the server occurred

๐Ÿ”– 6. Resources

6.1. Authentication

URI HTTP Method Description
/auth/signup POST Create new account
/auth/login POST Login into account

6.2. API Routes

URI HTTP Method Description
/api/v1/users GET Fetch all users
/api/v1/users/{id} GET Fetch a single user by ID
/api/v1/users/{id} PUT Update entire user resource
/api/v1/records GET Fetch all records
/api/v1/red-flags GET Fetch all red-flag records
/api/v1/red-flags/{id} GET Fetch a single red-flag by ID record
/api/v1/red-flags POST Create a new red-flag record
/api/v1/red-flags/{id}/location PATCH Update a red-flag's location
/api/v1/red-flags/{id}/comment PATCH Update a red-flag's comment
/api/v1/red-flags/{id} DELETE Delete a red-flag by ID
/api/v1/interventions GET Fetch all intervention records
/api/v1/interventions/{id} GET Fetch all intervention records
/api/v1/interventions POST Create a new intervention record
/api/v1/interventions/{id}/location PATCH Update an intervention's location
/api/v1/interventions/{id}/comment PATCH Update an intervention's comment
/api/v1/interventions/{id} DELETE Delete an intervention by ID

7. ๐Ÿ“ License

The iReporter REST API is open-sourced software licensed under the MIT license.

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.