Team Japan and Kevin
Portfolio Page
Main application
- Github: https://github.com/AkibaSato/NanoTwitter
- Heroku: http://nanotwitter-tjak.herokuapp.com/
- Port: 3000
User Service
- Github: https://github.com/mgkbsh/ntUserService
- Heroku: http://ntusers-tjak.herokuapp.com/
- Port: 1234
Tweet Service
- Github: https://github.com/mgkbsh/ntTweetService
- Heroku: http://nttweets-tjak.herokuapp.com/
- Port: 4567
Search Service
- Github: https://github.com/mgkbsh/ntSearchService
- Heroku: http://ntsearch-tjak.herokuapp.com/
- Port: 6000
Write Service
- Github: https://github.com/mgkbsh/ntWriteService
- Heroku: http://ntwrite-tjak.herokuapp.com/
nt Client
NOTE: The following service is no longer used.
Cache Service
- Github: https://github.com/kwang30/nt-cache
- Heroku: http://ntsearch-tjak.herokuapp.com/
- Port: 2000
These are required for your local development environment:
$ git clone https://github.com/AkibaSato/NanoTwitter
$ git clone https://github.com/mgkbsh/ntUserService
$ git clone https://github.com/mgkbsh/ntTweetService
$ git clone https://github.com/mgkbsh/ntSearchService
$ git clone https://github.com/mgkbsh/ntWriteService
Run the following commands in each repo directory.
Install sequelize
to global directory to just use sequelize
prefix instead of specifying path name to binary for commands:
$ npm install
$ npm install -g sequelize-cli
Postgres directory might be: /usr/local/var/postgres
$ pg_ctl -D <Postgres directory> start
$ sequelize db:migrate
Run every service with the following command.
$ node index.js
Point your browser to http://localhost:3000 and voila!
sequelize db: [create/migrate/drop] --env [development/test]
To connect to the Postgres shell:
$ psql ntdev
First create a boilerplate migration and model file with the basic columns. This example creates a new model:
$ sequelize model:create --name User --attributes fname:string,bio:text
Further modify the migration file and model file if necessary. Any changes to either file must be reflected in the other manually.
To migrate:
$ sequelize db:migrate
If you want to undo the migration:
$ sequelize db:migrate:undo:all
To migrate Postgres models on Heroku:
$ heroku sequelize db:migrate --env production
Check results of change in Postgres shell.
$ heroku pg:psql
To run tests, run: npm test
- Setup Github with
LICENSE.txt
,README.md
,version.rb
. - Design relational database schema.
- Design and layout user interface of nT.
- Design API interface.
- Explored several options such as MongoDB, Node.js, GraphQL, etc.
- Create skeleton app using MongoDB and Express.
- Create migration for database.
- Implement authentication for login and logout using
bcrypt
. - Configured Heroku and deployed skeleton.
- Write unit tests.
- Implement test interface.
- Setup automatic deployment.
- Load seed data.
- Migrated to Postgres and configured Heroku accordingly.
- Perform simultaneous manual testing.
- Implement the complete test interface.
- Use loader.io to generate some artificial loads.
- Add tests to test suite.
- Instrument app to collect performance data.
- Run load experiments.
- Update schema to put indices and other enhancements.
- Setup caching service for timelines and user information. Put on hold for comparing performance between cached vs non-cached.
- Implemented new authentication system due to issues when accessing the API from the client (nt0.7) and loader.io.
- Designed service oriented architecture and defined communication logic.
- API Routes were implemented and JSON data for output can be generated by including /api/v1/(API_TOKEN)/ between the main url and the necessary route and value.
- ntClient has been built and allows basic client side capabilities to create a user and tweet and check timelines through the command line.
- Write microservice to allow cached database writing was implemented and other microservices were cleaned up.
- UI and functionalities were completed.