/do-nothing-app

A "no frills" UI, API, and DB solution to bootstrap your next app.

Primary LanguageTypeScript

Do Nothing App

Summary

The "Do Nothing App" doesn't quite do nothing. It actually does a lot. It:

  • Registers new users
  • Generates temporary activation links for new users (it's up to you to send them in an activation email)
  • Activates new users in the DB via the temporary activation links
  • Logs users in
  • Handles user sessions (so that users don't have to login every time they refresh their browser)
  • Lets users know when they aren't activated, yet, prompting them to resend activation email
  • Lets users change their profile settings (including changing their email and password)
  • Lets users delete their account (deleting them from the DB)
  • Logs users out (destroying their session)
  • Handles routing via Reach Router
  • Handles forms via Formik

It also handles some major security concerns, like:

  • Protecting "logged in" UI routes via user authentication
  • Securing API interactions via JWTs
  • Requiring passwords to be at least 8 characters
  • Blocking brute force password attacks via limiting failed password attempts to 5 before requiring password reset
  • Securely storing passwords via bcrypt (which utilizes "salting" and "hash stretching" methodologies) (Further Reading, More Further Reading)
  • Encrypting PII (Personally Identifying Information) like names, phone numbers, and emails via AES-128
  • Implementing "blind indexes" for encrypted fields, like email, that need to be searchable (Further Reading)

What you won't see:

  • CSS
  • Tests

Use this repo as a baseline to create your next big app. The annoying bits of app development boilerplate listed above are taken care of for you. The rest is up to you.

Tech Stack

This is built using TypeScript, Create React App (for the client), NexusJS (for the server), and Postgres (for the database). For a more detailed breakdown, check out the READMEs for the client and server.