Launchpad Web Dev

 

Technologies

 

Backend

  • Node.js (Run time)

  • Typescript (Language)

  • Prisma ORM (Database Relational Mapping)

  • Docker + PostgreSQL (Containerization of Database)

  • Express (Server)

  • Shared

 

Frontend

  • Node.js (Run time)

  • Typescript (Language)

  • React (Framework)

  • MUI (Component Library)

  • React Query (State Management)

  • Axios (Http Flow Management)

  • Use form (Forms)

  • Vite

  • Shared

 

Shared

  • Typescript (Language)

 

Yarn (Workspace Manager)

 

Structure

Backend

  • index.ts (Declares express server and uses routers + cors, error handling)

  • Prisma (Schema and seeding for our database)

  • routes (Declare routers for experiences, users, projects, links and handles middleware validation)

  • Controllers (Handle the http level interface of the request, parse any information from the body or paramaters and pass information to service function. Passes errors as needed to error handler)

  • Services (Handles business logic of any api request. Interacts with our database using prisma)

  • Query Args (Include relational information required by the frontend for a given api request)

  • Tranformers (Transform the prisma models into a type expected by the frontend)

  • Testing (Unmocked Tests)

 

Frontend

  • Index.tsx (Entry Point for React app)

  • Auth Context (Logging the user in and tracking the current user) undefined is gonna be a guest

  • apis (Axios calls to backend)

  • hooks (Largely Manage state between axios calls and frontend displays)

  • components (Shared ui pieces)

  • pages (Large single instances of compilations of components)

    • Projects

    • Experience

    • About Me (bio)

 

Shared

  • Types

 

Gimmes

  • frontend login + contexts

  • backend cors, express setup and auth

  • GetCurrentUser, ValidateInputs, Errors, NERModal, LoadingIndicator, ErrorPage, PageNotFound, TopNavBar, NERFormModal, theme, fonts,

 

Timeline

  • Software General Info

  • NER Wide General Info

  • First Software Meeting - Talk about Club, Separate returning members vs new members, returning members get tech leads, new members get Launchpad Orientation (Explains what launchpad is) - Homework to do env setup based off of confluence. (ask #software_env_setup) about questions

  • 1st Week

    • Dedicate only 15 mins to wrapping up env setup (after 15 minutes were gonna start).

    • Start Discussing Prisma

      • Via slides, explain what SQL Tables is, explain what prisma schema is, explain existing scripts and what they do (10)

        • Walkthrough Schema Creation for Project, User (10)

        • Have them do Experience (10 - 20 minutes)

      • Via Slides explain what SQL Inserts are, explain what prisma.creates are (10)

        • Walkthrough seeding a project, user (5 - 10) (prisma studio to confirm)

        • Have them seed an experience (5 - 10 minutes)

      • Room for questions (10 - 20 minutes) (Padding)

      • Homework that they can start after workshop is seed 3 projects and 3 experience

      • Ask people questions during the walkthrough

  • 2nd Week

    • Start Discussing Express

      • What is an API

      • What is a Server

      • What is CRUD, HTTP

      • Routes, Controllers, Services Architecture (15-20)

      • Walkthrough

        • Create Project, Retrieve All Projects, Update Project, Delete Project + Transformers, Query args and Shared Types (15-20) (No File Uploads)

      • Have them do Create Experience, Retrieve all Experiences, Update Experiences, Delete Experiences + Transformers Query args and shared types (20-30) (No File Uploads)

      • Walkthrough File Uploads for projects (5 - 10)

      • have them do file uploads for experiences (5 - 10)

      • Homework, Finish anything they didnt get to do and do Get All Users and Log User In, Convert seeded functions to use service functions

  • 3rd Week

    • Start Discussing Testing

      • Unit tests versus integration tests (5 mins)

      • What is jest/vitest (10 mins)

      • Walkthrough

        • Tests for Create Project, Retrieve all projects, update project, delete project (15-20) minutes

      • Have them do Create Experience Retrieve all experiences, update experiences and delete experiences (20 - 30)

      • Walkthrough Postman Test for create project (5 - 10 mins)

      • Have them postman test their create experience function (5 - 10 mins)

      • Homework, Finish anything they didnt get to and test get all users and log use in

  • 4th Week

    • Start Discussing Frontend

      • Show our Designs (5 - 10 mins)

      • What is React (5 - 10 mins)

      • What is MUI (5 - 10 mins)

      • Current Structure of Frontend (5 - 10 mins)

      • Walkthrough Data Design of Project (10 - 15)

        • MUI Card, and look at MUI Card Docs take an example of a card and paste it into app.

        • Add a project as props to the card

        • Show how to link a image url to the backend file retriever that was made

        • Use Grid inside Card content to arrange the rest of the card

      • Have them try to make a component that takes in an experience and looks like the mock (20 - 30)

      • Homework Do the home page (give brief explanation on what useCurrentUser is

  • 5th Week

    • Talk about React Query and Axios (10 - 15 mins)

    • Walkthrough the Get All Projects Hook and API call (5 mins)

    • Have them do get all experiences hook and API call (5 - 10 mins)

    • Walkthrough of The All Projects Page using the component made last time (10 -15 mins)

    • Have them do the all experiences page with the component they made last time (20 - 30 mins)

    • Walkthrough of the Create Project Hook and API Call and adding the Create Project Card to projects page (Just supply dummy values for now) (10 - 20 mins)

    • Homework they do the create experience hook and api call and add the create experience button (dummy values)

  • 6th Week

    • React Hook Form Slides (10 -15 mins)

    • Walkthrough how to make the Project Form Modal and hook up to create project button (20 - 30)

    • Have them do the Create Experience Form Modal and hook up to create experience button (20 - 30)

    • Walkthrough the update Project hook, api, call it from the project card component that we created (5 - 10 mins)

    • Have them do the update Experience hook, api, call it from the experience section component for homework

  • 7th Week Show and Tell / Office Hours

    • Walkthrough image carousel as an example of an improvement

    • walkthrough delete project as an example of an improvement

    • Actual login flow as improvement