https://github.com/p1xt/january-2018-fullstack-challenge
Challenge designed to explore a variety of functionality in a fullstack application.
https://github.com/p1xt/january-2018-fullstack-challenge
Last synced: 5 months ago
JSON representation
Challenge designed to explore a variety of functionality in a fullstack application.
- Host: GitHub
- URL: https://github.com/p1xt/january-2018-fullstack-challenge
- Owner: P1xt
- License: unlicense
- Created: 2018-01-20T19:35:15.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2018-01-21T00:29:14.000Z (over 8 years ago)
- Last Synced: 2025-10-27T04:06:10.102Z (8 months ago)
- Size: 1.95 KB
- Stars: 10
- Watchers: 2
- Forks: 3
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# January 2018 - Fullstack Challenge
## Clone a Twitter / Snapchat Hybrid
Twitter allows for real time messaging "with the world", following users, tagging posts, targetting posts @ certain users, etc.
Snapchat has one feature that Twitter lacks - what you post to Snapchat is temporary, it does not persist "forever".
This challenge is to clone Twitter, but using Snapchat's message retention strategy.
## Features to implement
As a user, I can:
* Login via OAuth
* Post a message that is X characters long
* View a stream of the messages that have been posted
* View trending #TAGS
* Include a #TAG in my post
* @MENTION a user in my post
* Follow other users
* View a stream of messages from only those I follow
* View a stream of messages that match a particular tag
* Be notified when I am mentioned in a post
* Expect that my messages will disappear after X hours
As a non-authenticated user, I can:
* View the landing page
* View a stream of the messages that have been posted
* View trending #TAGS
* View a stream of messages that match a particular tag
_(What to set X to is your decision to make for your application.)_
## Tasks to complete
Total Points Earned:
* [ ] (20 Points) Implement pre-login landing page
* [ ] (20 Points) Implement login
* [ ] (20 Points) Implement frontend with input for entering post
* [ ] (20 Points) Implement backend for receiving post
* [ ] (30 Points) Implement backend for saving post
* [ ] (50 Points) Implement mechanism for backend to send post to all connected clients (suggestion: use web sockets)
* [ ] (20 Points) Implement frontend for showing stream of posts
* [ ] (50 Points) Implement functionality that deletes messages from the backend after X time
* [ ] (50 Points) Implement functionality that instructs clients to fade out deleted messages
* [ ] (20 Points) Implement functionality for recognizing #TAGS in posts
* [ ] (20 Points) Implement a "trending" sidebar which shows which #TAGS are currently being most used
* [ ] (20 Points) Implement functionality for recognizing @MENTIONS in posts
* [ ] (20 Points) Implement notifications screen where a user can see a log of messages in which they were @MENTIONED
* [ ] (20 Points) Implement "follow" functionality and a separate post stream where a user can see only the messages of those they follow
### Bonus points earned
* [ ]
* [ ]
* [ ]
## Bonus point opportunities
* 5 points per test case written and passing
* 50 points for following a git workflow (a branch for each feature, a commit for each change)
* 50 points for using a CSS Preprocessor (Sass/Less/Stylus/etc)
* 50 points for using a frontend framework/library (Angular/Vue/React/etc)
* 50 points for configuring linting on the project and automating lint before deploy
* 50 points for setting up continuous integration which automatically tests, lints, builds, and deploys on git commit
* 50 points for optimizing the production build (above 95 on google pagespeed insights, both mobile and desktop)
## Rules
* use whatever technologies / languages you want
* team up if you want, claim an extra 100 points for each team member if you complete the entire project together
* no deadline, but bragging rights if you finish quick (and to a good standard)
* 'done' project will have code and live app available online