You gotta lose to win.
Train yourself to:
- Get a raise
- Sell more
- Develop more business
- Negotiate better deals
The game has one rule:
You must be rejected by a human being at least once per day.
Ask for things outside your comfort zone, and you'll find yourself winning a lot more.
Win = 1 point. Rejection = 10 points.
How long can you make your rejection streak last?
Build a UI that lets you keep track of your score. Include a text input for the ask, who you asked, and two buttons: "Accepted" or "Rejected". For asynchronous requests such as emails or messages, record the score at the time you get the answer, not at the time you ask.
Use HTML+CSS and store a record of the data in localStorage
.
Your data structure can be a simple array of ask objects:
interface Ask {
timestamp: Number, // output from Date.now()
ask: String, // the ask
askee: String, // person asked
status: String // 'Accepted' or 'Rejected'
}
You can calculate everything else you need to know by reducing over the list of asks.
It may be useful to display a running tally of the user's current score. Just remember that the current day's subtotal needs to be recalculated each time an ask is accepted or rejected, so it will be useful to keep the list in an array that you can reduce with each new ask added by the user.
Add an API to store data using a web service and database. Track multiple users (which means you'll need to add user authentication). Hint: Redis, Mongo, or RethinkDB would be good database candidates. Social login such as Facebook or Twitter would be good login options (easier and more secure than username/password logins).
- Share your score and compete with your friends on Facebook.
- For each user, keep a leaderboard from their circle of friends.
- Add mobile apps by turning your web app into a Progressive Web Application.
A student project for Learn JavaScript with Eric Elliott.
Want to work as a team? Find a coding buddy in the student chat.