Planning Your Escape from Tutorial Hell

I’ve previously written about doing tutorial based projects and how it’s not a bad thing.

What can happen, is that your project looks like everyone else’s who did the same tutorial.

Again, this is not a bad thing.

But you can take your learning a step further by adding features onto those projects.

Here are some ideas to get you started

Automation

  • Automatically deploy changes each time a git repo is updated

CRUD operations

  • If a user can create items as part of your project, can they edit them as well?

Deploy

  • Migrate your backend database to Postgres and host on Heroku.
  • Automatically your frontend to Netlify or Vercel.

Edge cases

  • If a user is logged in, should they be able to view assets created by another user?

Error handling

  • What happens if a user tries to navigate away from a page while they were filling out a form field?
  • What if there is no result from an API query?

Form validation

  • Are there any form fields are required or nullable?
  • What happens if a user enters a string when a field is only meant to access numbers?

oAuth

  • Give users the ability to login with Google, Facebook, etc

Offline access

  • What does a user see if there is a slow connection? Do they see a blank screen or some content?
  • Store changes in the browser with a service worker until database access is restored

Refactor

  • Take a look at your code and see if there are opportunities to DRY it up.
  • Incorporate arrow functions, swap var instances for let or const, incorporate asynchronous functions.
  • Remove console.log(), debug() and TODO comments from deployed code.

Styling

  • Better rendering for mobile, dark/light mode toggle, make sure it’s accessible, etc.

Security

  • Are there any risks of exposed API keys or sensitive user data?
  • Is CORS enabled?

Tests

  • Write test to validate functions are outputting the expected results.

Leave a comment

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.