#Pinterestish App
Data: neo4j (records), redis (sessions)
Client: react, react-router, redux, SASS, fetch, karma, mocha, chai, sinon, enzyme
Server: express, passport, seraph (neo4j), mocha, chai, sinon
Tools: webpack, babel, react-hot-loader, nodemon, eslint
Misc: session based authentication via Twitter's OAuth1 API
- TWITTER_CONSUMER_KEY twitter sign in consumer key
- TWITTER_CONSUMER_SECRET twitter sign in consumer secret
- TWITTER_CALLBACK_URL twitter sign in callback url
- SESSION_SECRET session secret
- SALT hash salt
- GRAPHENEDB_URL neo4j url ex 'http://user:pass@host:port'
response body
(* = authenticated endpoint)
status 401
{
error: 'Unauthorized'
}
status 200
{
data: {
...user,
isAuthenticated: true
}
}
status 201
{
data: {
...post
}
}
status 200
{
data: [
...posts
]
}
status 200
{
data: [
...posts
]
}
status 204
No content
Twitter sign in redirect
status 200
{
data: {
isAuthenticated: false
}
}
status 201
{
data: {
...user
}
}
status 200
{
data: {
...user
}
}
status 204
No content
npm run test
runs server unit & functional tests, client unit & integration tests
npm run server:coverage
run server unit tests, generate coverage report
npm run server:coverage:func
run server functional tests, generate coverage report
npm run coverage:combine
combines coverage reports
npm run codeclimate
after setting ENV variable run this to push to codeclimate
server
npm run test:server
runs unit tests
npm run test:server:func
runs functional tests (requires redis and neo4j)
client
npm run test:client
runs unit/integration tests and generates coverage report
- set up travisCI with docker-compose
- database seeding utility scripts for cli
- move removepost to its own module on client?
- cool refactoring stuff with ramda
- styling and polish on client