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
Ensure that you have the following installed on your local machine:
-
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 changesnpm run watch
watches for any file changes and reloads the server
npm run build
To test or consume api locally, you can make use of Postman or Insomnia
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:
npm run mocha
ornpm run mocha:watch
- The later watches for any file changes and runs the full test suite (without code coverage)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
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": {}
}
]
}
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
All API requests are made by sending asecure HTTPS request using one of the following methods, depending on the being taken:
POST
Create a resourcePATCH
Update a resourceGET
Get a resource or list of resourcesDELETE
Delete a resource
For POST
and PATCH
requests, the body of your request may include a JSON payload.
Each response will be returned with one of the following HTTP status codes:
200
OK
The request was successful400
Bad Request
There was a problem with the request (security, malformed)401
Unauthorized
The supplied API credentials are invalid403
Forbidden
The credentials provided do not have permissions to access the requested resource404
Not Found
An attempt was made to access a resource that does not exist in the API500
Server Error
An error on the server occurred
URI | HTTP Method | Description |
---|---|---|
/auth/signup |
POST |
Create new account |
/auth/login |
POST |
Login into account |
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 |
The iReporter REST API is open-sourced software licensed under the MIT license.