
Build three angular apps—admin, ambassador, and checkout—with angular material and universal integration, exploring frontend vs backend data flows, Stripe checkout, and ambassador commissions.
Install ghiorso and the fibre framework, initialize a go module, add the starter code, fetch dependencies with go get, and run the project to display Hello world.
Configure a golang project with docker by creating a dockerfile and docker-compose, then run go mod download, map ports to localhost:8000, and enable volumes for live syncing.
Connect to a MySQL database inside Docker with Gorm, configuring ambassador database, credentials, volumes, and port mappings, ensuring the container starts first and the correct service address is used.
Connect to the container database, define a user model with id, first name, last name, email, password and ambassador flag, and auto migrate to create the users table using Gorm.
Install the air live reloader for Go inside the Docker container to enable automatic reloading on code changes, rebuild the Docker container after Dockerfile edits, and see updates instantly.
Explore admin authentication endpoints, covering registration, login to obtain an authenticated user, logout, and updating admin information, with parallels to the ambassador flow.
Set up user registration routes using fiber, define a register controller, and test with postman by sending post requests to the api/admin/register endpoint.
Register validates password confirmation, parses request data into a user with first name, last name, and email, hashes the password, and stores the user with auto migration.
Implement a login function that authenticates a user by posting email and password, verifying the hash, and returning secure errors on failure.
Learn to generate and sign a jwt in Go, building a payload with standard claims and a subject, expiring in one day, and return it as a cookie.
register and login flows benefit from user model methods that hash and compare passwords, enabling secure password management and streamlined authentication.
retrieve the authenticated user by reading the login cookie and extracting the JWT token. validate the token's claims and subject, then return the user or respond with unauthorized when invalid.
Format the authenticated user output to hide the password and return first name and last name in lowercase with underscores, using struct tags for optional fields and unique backend constraints.
Implement a logout function that issues a post request to clear the jwt cookie by overwriting it with an empty value and past expiry, resulting in unauthenticated requests until login.
Learn how to implement authentication middleware in a Go fiber app, validating cookies and tokens, using next to pass requests, and extracting the authenticated user id for secure routes.
Update your own profile by making put requests to the users endpoint, changing first name, last name, email, and password with validation, then re-authenticate to confirm changes.
Develop admin endpoints to support product credits, fetch links by user ID, and create an orders endpoint, then retrieve all ambassadors.
Create the ambassadors endpoint in a Go app, query users with ambassador true via context fiber, and seed 30 ambassadors with faker data in a Docker container.
Create a product model with id, title, description, image, and price. Implement crud endpoints for products: get all, get by id, create, update, and delete.
Learn how to use embedded structs to share a common model across user and product in Go. Create a base model with an idea field.
Create a link model with gorm in go, including a user foreign key and code field, set up a join table for many-to-many relations; expose get /users/{id}/links endpoint returning json.
Define go order and order item models with gorm, including id, transaction id, ambassador, attendees, and completion status, implement admin and ambassador revenue splits, and expose a populated orders endpoint.
Learn to preload related order items with Gorm, combine first and last names into a single name, and compute the total on the frontend.
Learn how to implement ambassador authentication endpoints by reusing existing functions with slight changes, mirroring similar endpoints and swapping the ambassador name like Armin.
Implement ambassador authentication and points in the rounds by configuring api routes, middleware, and role checks to distinguish ambassador versus admin users during register and login flows.
Define and apply scopes in jwt claims, then enforce access with middleware to control admin and ambassador routes, ensuring correct authorization.
Learn how to model user roles with aliases (admin and ambassador) in Go, and implement ambassador revenue calculation from orders, using pointers and omit empty to tailor API output.
Explore ambassador endpoints with five routes to retrieve products, filter front-end or back-end, create links, and examine link rankings for users.
Install and configure redis in a Go app using docker compose, connect with a redis client, and use it as an in-memory cache and message broker to speed data access.
Implement a Redis cache for products by checking the cache first, serializing results to bytes on a miss, and storing them with a 30-minute expiry.
Learn how to implement backend product search by filtering with a query, including title and description matching, case-insensitive handling, and a default fallback to all products.
Sort products by price in ascending or descending order using a comparator on a sliced list. Convert the sort value to lower case and support combined search and sort.
Learn how to implement robust product pagination in Angular and Golang, calculating start and end indices, handling total items, and computing the last page with ceiling while preventing slice errors.
Explore managing front end cache during product updates by clearing and rebuilding cache, using Golang goroutines to perform cache deletion asynchronously in the background.
Create and use string channels to coordinate go routines, sending keys and receiving values with arrow syntax. Build an asynchronous cache-clearing flow triggered by product updates.
Learn how to create ambassador links by posting a create link request, authenticating the user, generating a random code, associating products, and returning the new link.
Generate stats for each ambassador link by authenticating the user, fetching their links, aggregating order totals, and returning code, order count, and revenue.
Sort ambassadors by revenue in descending order using a fiber function, fetch users from the database, and map names to ambassador revenues for Redis-based sorting.
Use redis sorted sets to rank ambassadors by revenue, adding members with their revenue as scores and retrieving them in reversed score order for a clear rankings list.
Explore the checkout endpoints: fetch the link with the ambassador and products to obtain necessary information, create the order with all data, and finally confirm the order.
implement a get link endpoint by adding a get link function, retrieving a link by code with preloaded user and products, and returning a json link, while refining order visibility.
Explore creating orders in Angular and Golang, building a create order POST request with customer data and product items, validating links, and calculating ambassador and admin revenue splits.
Apply transactions to ensure all-or-nothing updates when creating orders and order items, using begin, commit, and rollback to handle errors and panics gracefully.
Configure Stripe checkout sessions by using publishable and secret keys, define line items and amounts in cents, and set success and cancel URLs for seamless payments.
Complete orders in a Golang backend by posting to order/confirm, validating the source, saving the order, and triggering background tasks to update ambassador rankings and notify admins and ambassadors.
Learn to send emails in a Go application using MailHog, configure binding addresses, and troubleshoot docker localhost networking while sending ambassador and admin emails.
Install and run Angular, set up a new project with routing, install npm globally, and launch the app on port 4200 to view the running Angular app.
Explore building a Bootstrap-based Angular template by linking the Bootstrap CSS to the index, refining the example dashboard, and modularizing the email UI into reusable components.
Create public and secure modules and components, configure routes and router outlets to render login, register, and secured components, with access controlled by login status.
Build the register page by copying the login form, wiring a reactive form with first name, last name, email, password, and password confirm, and post to api admin / register.
Builds a login form by creating a form group with a form builder for email and password, posts to the environment login endpoint, and handles http-only JWT cookies for security.
Create a dedicated authentication service for registration and login, move the EDP client, and centralize data handling with credentials for obtaining the authenticated user.
Fetch the authenticated user from the user endpoint, define a user interface with id, first name, and last name, subscribe to the service, and ensure cookies are sent with credentials.
Implement logout by calling the service, sending an empty request with credentials to remove the cookie, and navigate to the login page, while protecting routes with a secure component.
Learn how interceptors automate adding credentials to all requests in Angular applications, using request cloning and a credentials interceptor to streamline authentication workflows.
Design the profile component with two reactive forms for info and password, perform put requests to update user data, and enable router outlet navigation with live updates.
Learn how to use Angular event emitters to propagate user data between components, reducing server calls by emitting and subscribing to static events for login and profile updates.
Set up routing to redirect the main page to the users table, highlight the active link, and fetch users through a user service using environment.api/users, displaying name and email.
Install angular material and select a style, then implement a mat-table in your app. Configure a data source for users and define columns such as id, name, email, and actions.
Learn how to implement MatPaginator for an Angular Material table, using ViewChild, after view init, and a data source to paginate and control items per page.
Create a user links page with a router link, an angular material button, and a data-driven table that fetches links via a service and calculates revenue from orders.
Learn to build a product component, hook it to the menu, and fetch all products via a service, displaying them in a table with id, title, description, image, and price.
Create a product form using a form group and form builder to capture title, description, image, and price, then submit via the product service and navigate to products.
Update products using a single form in Angular, differentiating create and update via the data property, retrieving by the product idea, populating the form, and redirecting to the products list.
Learn how to delete a product in an Angular and Golang app by confirming before deletion, sending a delete request, and updating the data source to remove the item.
Develop an orders feature by generating the orders component, service, and interfaces; fetch and display orders in an expansion panel with email, totals, and a table of order items.
Set up and configure an angular project for the Angola ambassador app, adjust port from 4200 to 4300, apply bootstrap and template changes, and run and verify the local server.
Import and reuse data from the Angular admin and ambassador projects, including interfaces, public model, interceptors, and services, then set up environment endpoints and routing for login and register.
design a dynamic navigation in angular using a main model and jwt-based auth. implement login, sign up, profile access, and logout with router links and conditional ui.
This lecture builds a secure module and a shared model to protect the profile page for authenticated users, while configuring routing, outlets, and reactive forms for consistent cross-module use.
Build and configure a header component in Angular, set dynamic title and description, toggle login/register links for unauthenticated users, and display user revenue when authenticated.
Explore building stats and rankings in an Angular and Golang rapid guide, adding secure stats components, services, and navigation, and rendering rankings with key-value formatting for name and revenue.
Set up router link navigation between the front-end and back-end products components and wire them into the main navigation paths. Apply routerLinkActiveOptions with exact: true to prevent mis-highlighting and style active links with underlines.
Learn to fetch backend products via a product service using an endpoint, extract the data array, and render product images, titles, and prices on the page.
Master lazy loading in angular and golang by implementing a load more button, paging via a page query parameter, and concatenating new products to the list.
Manage http params for paginated results by showing or hiding the button based on the last page, and ensure refresh redirects to the first page with numeric page handling.
Implement product search in an Angular and Golang app by wiring a search input to a backend query, and manage page navigation with merged search and page parameters.
Implement price-based product sorting in an Angular list by selecting ascending or descending. Handle the change event, pass the sort value to the backend, and reset pagination.
Select products by clicking to toggle a selected state, apply a border and color to highlighted items, and use a selected array with an isSelected check to manage selection.
Click the generate button to create links for selected products, call the links service via the backend, and display the checkout URL on the front end with login error handling.
Complete the frontend by mirroring the backend and reusing the TypeScript code. Fetch products from the environment API slash products, subscribe to the results, and prepare search for next tutorial.
implement pipes for filtering, pagination, and sorting in Angular apps, including declaring them in the main module. understand the role of pure versus impure pipes and the required execution order.
Set up a rapid Angular checkout project, configure port 5000, integrate a Bootstrap checkout template, and tailor the form by removing unnecessary fields, making email required, and enabling checkout.
Create and wire three components (form, success, error) to retrieve link data via a service, calling the backend at localhost:4000, and display ambassador name and email after fetching.
Explore how to add angular universal to render the app on the server side, improving search engine optimization by delivering pre-rendered content that Google can index.
The lecture demonstrates listing products with title, description, and price, adding a quantity input, and preparing to update the total as quantities change.
Initialize a quantities array with zeros for each product, then calculate the order total by summing product prices times quantities using reduce.
Create a reactive form with a form group and builder, collect user data, and post an order to the api with products that have positive quantities.
Implement a stripe checkout flow in an angular and golang app using the publishable key, stripe.js, and test data mode; redirect to checkout and confirm the order with the source.
Learn how to create an Ambassador App using Angular and Golang. We will build 3 frontend apps Admin, Ambassador and Checkout and they will consume a big Golang API.
In Go you will learn:
Use Docker
Use the Fiber framework inspired by express.js
Create public and secure routes
Connect with MySQL
Run Migrations
Generate Jwt Tokens
Use HttpOnly Cookies
Login with Scopes
Use Gorutines
Use Channels
Use Golang with Redis
Use Stripe
Sending Emails
Filter Cached Products
In Angular you will learn:
Angular CLI
Use interceptors
Create public and private routes
Use Reactive Forms
Angular Material
Server-Side Rendering with Angular Universal
Use Event Emitters
Use Typescript
I'm a FullStack Developer with 10+ years of experience. I'm obsessed with clean code and I try my best that my courses have the cleanest code possible.
My teaching style is very straightforward, I will not waste too much time explaining all the ways you can create something or other unnecessary information to increase the length of my lectures. If you want to learn things rapidly then this course is for you.
If you have any coding problems I will offer my support within 12 hours when you post the question. I'm very active when trying to help my students.
So what are you waiting for, give this course a try and you won't get disappointed.