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 adminsecretAdmin Access user123secretUser 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,postgresinstalled. -
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
pgAdminor run the below command on your terminal:createdb -h localhost -p 5432 -U postgres ireporter
-
Configure
.envenvironment 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 devspin up the server without watching for any file changesnpm run watchwatches 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:
npm run mochaornpm 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
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/v14. HTTP Requests
All API requests are made by sending asecure HTTPS request using one of the following methods, depending on the being taken:
POSTCreate a resourcePATCHUpdate a resourceGETGet a resource or list of resourcesDELETEDelete 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:
200OKThe request was successful400Bad RequestThere was a problem with the request (security, malformed)401UnauthorizedThe supplied API credentials are invalid403ForbiddenThe credentials provided do not have permissions to access the requested resource404Not FoundAn attempt was made to access a resource that does not exist in the API500Server ErrorAn 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.

Formed in 2009, the Archive Team (not to be confused with the archive.org Archive-It Team) is a rogue archivist collective dedicated to saving copies of rapidly dying or deleted websites for the sake of history and digital heritage. The group is 100% composed of volunteers and interested parties, and has expanded into a large amount of related projects for saving online and digital history.
