Every NestJS tutorial: controller → service → database.
My new Udemy course: what comes after that.
Clean Architecture & DDD, taught by building a full e-commerce backend - aggregates, CQRS, domain events, sagas, Stripe.
https://t.co/jnHk0ENRuF
Every PDF signing site: make you do all the work, THEN hit you with a paywall.
So I made https://t.co/hiTCz7KwyT - sign & fill PDFs entirely in your browser. Nothing uploads. No account, no watermark, free forever.
Share it with someone who signs stuff.
New lecture available in: Clean Architecture & Domain-Driven Design in NestJS.
We create a NestJS CQRS Saga to transform domain events from different domains and ensure order confirmation. We use RxJs Observable mapping.
https://t.co/ZMQ6tgOiRb
New lecture available in: Clean Architecture & Domain-Driven Design in NestJS.
We implement the Confirm Payment Handler to transition our Payment Status after receiving the Stripe checkout webhook.
https://t.co/ZMQ6tgOiRb
New lecture available in: Clean Architecture & Domain-Driven Design in NestJS.
We set up Stripe webhooks by creating an HTTP listener route. Now we can respond to successful payments; we will transition our Order Status.
https://t.co/ZMQ6tgOiRb
New lecture available in: Clean Architecture & Domain-Driven Design in NestJS.
We finish the Create Payment Handler and expose it over HTTP - we now have a Stripe-hosted payment URL to pay for our Order!
https://t.co/ZMQ6tgOiRb
New lecture available in: Clean Architecture & Domain-Driven Design in NestJS.
We create the Order Pricing Port & Adapter so we can encapsulate the order pricing calculation we feed to Stripe and keep it abstract.
https://t.co/ZMQ6tgOiRb
New lecture available in: Clean Architecture & Domain-Driven Design in NestJS.
We start the Create Payment Handler to invoke the Payment domain and trigger the Stripe payment through the Payment Gateway Port.
https://t.co/ZMQ6tgOiRb
New lecture available in: Clean Architecture & Domain-Driven Design in NestJS.
We built the Stripe Payment Adapter to allow for Stripe-hosted checkout sessions to be created with Product line items from our Order.
https://t.co/ZMQ6tgOiRb
New lecture available in: Clean Architecture & Domain-Driven Design in NestJS.
We create our Stripe account and get our API key so we can set up the Stripe SDK and build our Stripe Payments Adapter to allow for payments of our orders.
https://t.co/ZMQ6tgOiRb
New lectures available in: Clean Architecture & Domain-Driven Design in NestJS.
We create the Payment Gateway Port to define the methods we need our adapters to implement in order to support payments in our Clean Architecture.
https://t.co/ZMQ6tgOiRb
New lectures available in: Clean Architecture & Domain-Driven Design in NestJS.
We create the Drizzle Payment Repository Adapter to implement our Payment Entity save and findByOrderId. Next up, we start the Payment Gateway Port.
https://t.co/ZMQ6tgOiRb
New lectures available in: Clean Architecture & Domain-Driven Design in NestJS.
We create our Payment Repository Port and Drizzle Schema to allow for a decoupled and clean implementation to save and retrieve payments.
https://t.co/ZMQ6tgOiRb
New lectures available in: Clean Architecture & Domain-Driven Design in NestJS.
We create our Payment entity in the domain model to encapsulate our payment implementation via Stripe from our core domain model.
https://t.co/ZMQ6tgOiRb
New lectures available in: Clean Architecture & Domain-Driven Design in NestJS.
We start our Payment domain by creating a Payment Status value object so we can track the status from our upstream payment gateway.
https://t.co/ZMQ6tgOiRb
New lectures available in: Clean Architecture & Domain-Driven Design in NestJS.
We finish adding the final state invariance to our Order domain with the cancel method. We're almost ready to move on to implementing payments with Stripe.
https://t.co/ZMQ6tgOiRb
Every app I build needs feedback, feature voting, and a changelog.
So I built Wherd. Feedback, feature voting, and "What's New" - all in one component for Expo, React Native, and web.
Totally free.
https://t.co/JeTGZFpJtS