Skip to content

HossamAbubakr/Udacity-Full-Stack-Classroom

Repository files navigation

logo

Full-Stack Nanodegree Classroom

Powered By

typescript postgresql jasmine jwt prettier eslint node circleci aws

AboutDisclaimerPrerequisitesGoalsContentSetupQuestionsContributionsLicense

💡 About

This repo includes the live coding portion of my lectures for Udacity Full-Stack Javascript Nanodegree students.

We are building a backend application called Udacity Hub which functions as a hub for Udacity students and session leads.

In each session, I apply the Nanodegree topics to our application.

Starting from an empty project to a complete application that's deployable to AWS and utilizes CI/CD powered by CircleCI.

This repo will be continuously updated, improved, and iterated upon.

Each session includes a project folder, a list of additional learning resources, a breakdown of the session content, and a quiz.

Each folder contains an extensive list of commits that breaks each session into digestible chunks that are easy to follow.

⛔ Disclaimer

Please DO NOT COPY any of the code included in this repo into your project submission or you might face a plagiarism case.

The purpose of this repo is to serve as a reference for your self-study after our sessions.

Please don't misuse the code provided as a way to skip finishing your projects.

🧱 Prerequisites

Before attempting to start the program you should be familiar with the following topics.

So please click on the provided links to fill in the gaps in your knowledge.

🚀 Goals

By the end of session 10 you will be able to:

  • Utilize some of the best features of TypeScript.
  • Build comprehensive backend applications.
  • Create complex and efficient SQL relationships.
  • Retrieve data from SQL using Joins.
  • Implement authentication / authorization.
  • Implement password hashing, salting, and peppering.
  • Create an extensive set of unit tests.
  • Create and configure several cloud services.
  • Set up and deploy our completed app to the cloud.
  • Create a CI/CD pipeline to automate our deployment.

📖 Content

Project 1: (Image Processing API)

Project 2: (Build A Storefront Backend)

Project 3: (Hosting a Full-Stack Application)

💻 Setup

Each folder functions as its own isolated and self-contained unit. Meaning that you have to set up each folder individually.

To install the required packages please use

npm install

Inside the designated udacity_hub folder NOT the session folder.

Some of the sessions include unit tests which can be executed using

npm run test

And starting from session 5 a set of migrations can be executed using

npx db-migrate X

With X being substituted with up, down or reset.

Starting from Session 4, a database will be needed

To create a database through psql please use

CREATE DATABASE DB_NAME;

🌟 Special Folders

Some sessions include special or additional data files such as SQL_REFERENCE.sql starting from Session 4 which includes the SQL commands used in the live session.

Or the data_migrations folder starting from Session 6 which includes a set of data to be used on your database to add some mock data. And the instructions on how to utilize it are included in the README

🔣 Environment Variables

Starting from Session 5 env files are used to pass important information so please check the ENV-EXAMPLE file in each session you want to run.

🖐 Questions

If you have any questions, ideas, or suggestions please head over to our discussions board where I will do my best to implement your ideas and answer your questions.

🎉 Contributions

Your contributions are welcome! Whether to:

  • Report a bug
  • Discuss the state of the code
  • Submit a fix
  • Propose new features
  • Comment on a commit to explain it further.

Our community is also open for any of your ideas and questions.

Please note that we have a few self-imposed restrictions

  • The changes need to fall under the content of the Nanodegree
  • We can't use a different database system or use an ORM
  • Change the application structure drastically.

Pull requests are the best way to propose changes to the codebase. We actively welcome your pull requests:

  • Fork the repo and create your branch from master.
  • If you've added code that should be tested, add tests.
  • Ensure the test suite passes.
  • Make sure your code lints.
  • Issue that pull request!

Please note that any contributions you make will be under the MIT software license.

🧾 License

This project and its code are licensed under the MIT license.

⚖️​ Legal Disclaimer

Udacity's name and logo are trademarked and owned by The Udacity™ Organization.