- Recording Links
- This is an MS Teams link and everyone in the class should have access. If not, please contact an instructor.
(Do not attend or not attend class based on this list. There is a high chance we will cover other topics.)
- Syllabus & expectations
- Wordle Requirements
- Set up front end and build out basic application.
- Initial look at
- NPM
- Vue
- VS Code Extensions
- Code Spell Checker
- Prettier
- GitHub CoPilot
- ViTest
- Vite
- Vue - Official
- Details
- Create Nuxt app:
npx nuxi@latest init <project-name>
- Create Nuxt app:
- Complete application
- Classes in C#/Java and TS/JS
- Basic unit testing with Jest
- Add testing:
npm i --save-dev @nuxt/test-utils vitest @vue/test-utils happy-dom playwright-core
- Add testing:
- Build deployment for front-end in Azure.
- Azure DevOps
- YAML
- Azure AppService
- Vue Build /
npm run generate
- Vuetify
https://nuxt.com/modules/vuetify
https://www.codybontecou.com/how-to-use-vuetify-with-nuxt-3.html
- Why Vue? What problem does is solve?
- HTML Primer: elements, classes, styling
- CSS Primer
- Why CSS is the devil
- Chrome debugger
- What is Vue for and how does it work? Stop messing with the DOM
- {{ Interpolation }}
- Data Binding and Observables: https://vuejs.org/guide/essentials/template-syntax.html
- Creating the word and letter elements
- Changing these into components
- Class and Style https://vuejs.org/guide/essentials/class-and-style.html
- Computed properties https://vuejs.org/guide/essentials/computed.html
- Pages
- Component Basics (MG)
- Routing https://vuejs.org/guide/scaling-up/routing.html
- Lifecycle: https://vuejs.org/guide/essentials/lifecycle.html
- Lists (For loops): https://vuejs.org/guide/essentials/list.html
- Add Additional Wordle Functionality
- Word list
- Random word selection
- Showing all 6 guess lines
- Entering letters not in a text box
- Determine win & loss
- Game state
- Restart game
- Attributes
- Observables
- Proxies
- Functions
- Conditional Rendering: https://vuejs.org/guide/essentials/conditional.html
- Events: https://vuejs.org/guide/essentials/event-handling.html
- Spacing (padding and margins) (CSS Box Model)
- Components: https://vuejs.org/guide/components/registration.html
- Watchers: https://vuejs.org/guide/essentials/watchers.html
- Transitions: https://vuejs.org/guide/built-ins/transition.html
- Grid System
- Display and sizing
- Icons
- Theming
- Elevation
- Height and width (h- & w-"
- Components: Containment
- Buttons
- Cards
- Chips
- Lists
- Animation
- Input: https://vuejs.org/guide/essentials/forms.html
- Components: Tables
- Components: Form Inputs
- Selects
- Switches
- Text: Fields and Areas
- Combos
- Slots and Emits
- What is MVC and why are we doing a SPA
- Quick Intro to ASP.NET MVC
- Starting an ASP.NET API Project
- Build the Word of the Day API endpoint
- Creating a simple API
- Program.cs
- Controllers
- Basic Routing
- Services (DI)
- CORS
- DevOps
- More ASP.NET and EF and homework 3 material
- Unit Testing the API
- Basic Unit Testing
- Unit testing with services
- Unit testing with WebApplicationFactory
- Unit vs Integration Testing
- What is EF
- Creating a context
- Creating models
- Migrations
- Initial EF Context
- Word object
- Word migration
- EF Migration Deltas to a table
- Word Service
- Word Controller that returns a word
- Handling multi-threading issues with creating the word of the day.
- Service Dependency Injection
- Deployment (Site and Database)
- API configuration: Swagger in production
- Troubleshooting Azure
-
Meg's Awesome Changes
- Global Base URL for Axios
- Restructure App Async in Constructor
-
Unit Testing with Databases
- API unit testing: database, services, integration.
- Testing with DI and Services
-
EF Parent/Child (Word with child Game)
- Adding additional migrations
- API Post
- DTOs
--- After this point is subject to significant change ---
- EF Querying
- Querying with Includes
- EF unit testing
- EF unit test base
- Model builder cascade deletes
- Posting the results of a game
- Returning a DTO with statistics for a word/WOTD
- Axios using Post
- Redirecting root on API to the Wordle site
- Word of the day controller and tests
- GroupBy: Returning stats for all words
- Unique indexes
- Reusing a view for multiple routes
- Parsing query parameters to determine game type
- Get method query parameters on API endpoints
- Load Word of the day in App
- Integration testing
- Miscellaneous
- Custom favicon
- New starting page and default route
- Vue services (Provide and Inject)
- EF multiple table queries (Getting Word of the Day stats)
- Using GroupBy, Sort
- Questions from the homework
- Lots of other stuff pertaining to homework
- Google Analytics
- Database rollback and Migration consolidate
- Full page images with themes
- CSS deep dive
- Navigation when query changes
- v-model
- CSS animations using transition
- Creating revealing letters
- The problem of security and how to handle it
- ASP.NET Identity Intro
- ASP.NET Identity
- Setup up EF Identity in an existing project
- JWT creation and verification
- Authorization attributes for roles and policies
- Setup of Swaqgger to take a bearer token
- Front end bearer tokens
- Auth Service
- Route Guarding
- Identity in a web project (not just API)
- Scaffolding EF
- Adding Identity to the API
- Scaffolding EF
- Cookies
- JWTs, validation, claims (UserId, Name)
- Create login component
- Managing state around logins, existing GUID, etc.
- Managing auth flow and various login cases
- Remembering login
- Refreshing the token
- Authorizing specific API calls
- API testing with service mocks and interfaces
- Graceful error handling when API is missing
- Work on Final project
- Work on Assignment 4
Other Topics
- Vuetify
- Flex
- Float
- Dialogs
- Menus
- Tooltips