An app to geographically visualize and organize tattoo artist information.
/ˈkɑr tə ˌgræf/
, nounan illustrated map
git clone [email protected]:kenziebottoms/artograph.git
cd artograph
npm install
Copy server/db/config/config.sample.json
to ../config.json
and updated the credentials for your local environment.
npm run db:reset
npm start:dev
npm run db:regen
: generate database fromserver/db/seeders
npm run db:save
: save current database toserver/db/export.sql
npm run db:reset
: reset database to last saved
- Artograph
- API Endpoints (all preceded by
/api/v1
) - Angular Routes
- Users can search a list of artists by
- name,
- tags,
- region name.
- User can select their current location and receive a filterable list of tattoo artists ordered by distance from that point.
- User can enter in tattoo artist information for other users to browse.
- Users can add tags to artists that other users can search by.
- Users can mark artists as their favorites.
- User can filter and search on their favorites.
- App will automatically geolocate user.
- App will scrape instagram to show recent tattoos.
- App will reverse-geocode latitude and longitude and infer a region name.
- Users can edit artist information and tags.
- Users can up- and downvote others’ tags.
- Users can look up an Instagram account and the app will try and guess/scrape the artist’s information and location.
Returns metadata on the given user scraped from Instagram, and a 4-post feed with image and post links.
Path | Method | Result |
---|---|---|
/register |
POST |
Register |
/login |
POST |
Login |
/logout |
POST |
Logout |
Returns a list of all artists.
Query string | Effect |
---|---|
[none] | Sorts artists by id . |
sort=alpha |
Sorts artists alphabetically by last name. |
lat=:lat&lng=:lng |
Sorts artists by distance from [lat, lng] . |
Note: lat
and lng
will be ignored if they are not valid numbers.
Checks for an existing artist with the given email
; if not found, validates data, and adds new artist. Returns 409: Conflict
if there is a duplicate and 400: Bad Request
if the data doesn't validate (for example, if lng
/lat
aren't numbers).
Returns one artist by id
.
Updates the artist with the given id
without overwriting unaddressed properties.
Returns a list of all artists associated with the given tag.
Query string | Effect |
---|---|
[none] | Sorts artists by id . |
sort=alpha |
Sorts artists alphabetically by last name. |
lat=:lat&lng=:lng |
Sorts artists by distance from [lat, lng] . |
Returns a list of artists within an allowance
by allowance
latitude/longitude point square of the given [lat, lng]
. lat
, lng
, and allowance
are all required and this endpoint will return 400: Bad Request
if they are invalid or not supplied.
Returns a list of all tags.
Checks for an existing tag with the given name
; if not found, validates data, and adds new tag. Returns 409: Conflict
if there is a duplicate and 400: Bad Request
if the data doesn't validate (for example, if there's no name
property in the request body).
Returns one tag by id
.
Returns a list of the tags associated with the provided artist.
Returns a list of tags whose titles contain q
(case-insensitive).
Returns a list of tags whose titles match q
(case-insensitive).
Returns the currently authenticated user. Returns { user: null }
if there isn't one.
Returns the id
s of the given user's favorite artists.
Query string | Effect |
---|---|
verbose=true |
Returns the full artist object for each favorite. |
Returns the id
s of the currently authenticated user's favorite artists. Returns 401: Unauthorized
if no one's logged in.
Query string | Effect |
---|---|
verbose=true |
Returns the full artist object for each favorite. |
Adds the artistId
as a favorite to the currently authenticated user. Returns 401: Unauthorized
if no one's logged in.
Removes the artistId
from the currently authenticated user's favorites. Returns 401: Unauthorized
if no one's logged in.
Path | Description |
---|---|
/#!/ |
Homepage |
/#!/new |
Add new artist form |
/#!/faves |
Authenticated user's faves |
/#!/tags/:tag |
Artists listed with the given tag |
/#!/edit/:id |
Edit artist form |
/#!/login |
Login form |
/#!/register |
Registration form |