Giter VIP home page Giter VIP logo

devtodollars / startup-boilerplate Goto Github PK

View Code? Open in Web Editor NEW
524.0 10.0 57.0 2.21 MB

A mobile and/or web boilerplate that covers all your MVP needs

Home Page: https://devtodollars.com

License: MIT License

Kotlin 0.03% Ruby 0.78% Swift 0.71% Objective-C 0.01% Dart 9.34% CMake 5.41% C++ 6.62% C 0.40% HTML 1.01% TypeScript 70.26% Shell 0.17% CSS 0.52% JavaScript 0.66% PLpgSQL 4.08%
boilerplate flutter flutter-boilerplate flutter-starter riverpod gorouter flutter-beginners flutter-template nextjs nextjs-template shadcn-ui stripe shadcn supabase nextjs-starter

startup-boilerplate's Introduction

Production MVP Boilerplate

What's Included:

Mobile / Desktop / Web App (Flutter)

Landing Page / Web App (NextJS)

  • App Router
  • Typescript
  • Payments with Stripe
  • Authentication with Supabase
  • ๐Ÿšง Landing Page Template ๐Ÿšง

Backend (Supabase)

  • Authentication
  • Email + PW
  • SSO (Google, Github, etc.)
  • Fully configured for local development from day one
  • ๐Ÿšง backend tests ๐Ÿšง

Analytics (Posthog)

  • Unified analytics across frontend and backend based on user_id
    • Frontend analytics comes pre-installed for iOS, Android, Web, and MacOS
    • Backend analytics installed and linked to frontend analytics
  • Basic events captured:
    • user signs in
    • user signs up
    • user deletes account
    • user starts checkout
    • user opens billing portal
    • user completes checkout

Payments (Stripe)

  • Stripe fully setup and works with one-time payments and subscriptions
    • stripe table to store stripe_customer_id and current active_products
    • Stripe webhook to sync user subscriptions from stripe to supabase
    • Deno function to retrieve the billing portal url or a checkout session url which works with the payments_screen

Release (Github Actions)

  • Script to bumpversion.sh following semantic versioning
  • Deploys a web preview on Netlify for every PR
  • Publishing pipeline to publish to Netlify and to publish supabase functions
  • ๐Ÿšง Automated Mobile Publishing ๐Ÿšง

Emails (Postmark)

  • Send transactional emails
  • DNS setup to avoid spam folder (DKIM, DMARC, SPF in subdomain)
  • Simplify email updates by using postmark templates

๐Ÿšง Error Monitoring (Sentry) ๐Ÿšง

startup-boilerplate's People

Contributors

matthewwong525 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

startup-boilerplate's Issues

Email Verification + Google / Github SSO for Web

  • Sending emails and it's bouncing because email is not verified. Add email verification! Basically after they sign up, change to sign in and shoot a dialog telling user to verify their email.
  • Ensure to only send emails to verified users! So maybe if email_verified_at is not null. or something along those lines. (double check that this works with SSO)
  • Update UI so that it optimizes for using SSO (effectively hiding the email form). The goal is to drive more people to use SSO because it is better.
  • Update docs to teach people how to do SSO or at the very least remove the construction stuff in the README

Will NOT DO:

payment success / failure dialog

when user finishes payments, they sometimes don't know if they paid or failed. For the redirect add a dialog with payment success and payment failure. if payment success. also tell them to click "payments" to view the portal

Make deno and typescript lint easier

Users come across the problem of dealing with deno and typescript lint. Perhaps change some defualt settings and update the documentation to talk about this.

supabase refreshing token causes payments to not redirect

Steps to reproduce:

  1. Login
  2. Wait for a while for localStorage token to expire
  3. Go to payments link in Flutter
  4. User will be logged in, supabase will fetch another refresh token and it'll end

Expected result:

  • should redirect to payments page. Should not go back to home page even when it refreshes (potentially have it so that we don't clear the intialUrl until it goes to a different page)
  • worse case we can redirect even if the screen changes โœ…

Move devtodollars code docs into here

we want to move docs here so that we can make changes to the code and docs in 1 PR and at the same time. Also people can easily have access to the doc without having to go to the website.

  1. Basically move stuff in this folder to a newly created docs repo in this repository.
  2. Then update the script to pull the docs from this repository
  3. Create a workflow similar to the workflow in landing-page repository but make it so that it only triggers if there are changes to the docs folder.

Remove docusaurus folder

We want to remove the docusaurus folder in favour of the new landing-page repository.

Also, the docusaurus component should not really be part of this repository

Seems like there's mismatch between versions

getting all those errors which seems like a mismatch between the installed flutter version and the required one:
^^^^^^^
/sdks/flutter/packages/flutter/lib/src/rendering/proxy_box.dart:2774:20: Error: The getter 'Matrix4' isn't defined for the class 'RenderFittedBox'.

  • 'RenderFittedBox' is from 'package:flutter/src/rendering/proxy_box.dart' ('/sdks/flutter/packages/flutter/lib/src/rendering/proxy_box.dart').
    Try correcting the name to the name of an existing getter, or defining a getter or field named 'Matrix4'.
    _transform = Matrix4.translationValues(destinationRect.left, destinationRect.top, 0.0)
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/rendering/proxy_box.dart:2840:45: Error: 'Matrix4' isn't a type.
    void applyPaintTransform(RenderBox child, Matrix4 transform) {
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/rendering/proxy_box.dart:2934:45: Error: 'Matrix4' isn't a type.
    void applyPaintTransform(RenderBox child, Matrix4 transform) {
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/rendering/proxy_box.dart:4886:41: Error: The getter 'Matrix4' isn't defined for the class 'RenderFollowerLayer'.
  • 'RenderFollowerLayer' is from 'package:flutter/src/rendering/proxy_box.dart' ('/sdks/flutter/packages/flutter/lib/src/rendering/proxy_box.dart').
    Try correcting the name to the name of an existing getter, or defining a getter or field named 'Matrix4'.
    return layer?.getLastTransform() ?? Matrix4.identity();
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/rendering/proxy_box.dart:4958:45: Error: 'Matrix4' isn't a type.
    void applyPaintTransform(RenderBox child, Matrix4 transform) {
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/rendering/proxy_sliver.dart:83:48: Error: 'Matrix4' isn't a type.
    void applyPaintTransform(RenderObject child, Matrix4 transform) {
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/rendering/rotated_box.dart:75:3: Error: 'Matrix4' isn't a type.
    Matrix4? _paintTransform;
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/rendering/rotated_box.dart:93:25: Error: The getter 'Matrix4' isn't defined for the class 'RenderRotatedBox'.
  • 'RenderRotatedBox' is from 'package:flutter/src/rendering/rotated_box.dart' ('/sdks/flutter/packages/flutter/lib/src/rendering/rotated_box.dart').
    Try correcting the name to the name of an existing getter, or defining a getter or field named 'Matrix4'.
    _paintTransform = Matrix4.identity()
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/rendering/rotated_box.dart:145:45: Error: 'Matrix4' isn't a type.
    void applyPaintTransform(RenderBox child, Matrix4 transform) {
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/rendering/sliver.dart:1090:28: Error: 'Matrix4' isn't a type.
    void applyPaintTransform(Matrix4 transform) {
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/rendering/sliver.dart:1561:48: Error: 'Matrix4' isn't a type.
    void applyPaintTransform(RenderObject child, Matrix4 transform) {
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/rendering/sliver.dart:1784:56: Error: 'Matrix4' isn't a type.
    void applyPaintTransformForBoxChild(RenderBox child, Matrix4 transform) {
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/rendering/sliver.dart:1860:48: Error: 'Matrix4' isn't a type.
    void applyPaintTransform(RenderObject child, Matrix4 transform) {
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/rendering/sliver_group.dart:136:48: Error: 'Matrix4' isn't a type.
    void applyPaintTransform(RenderSliver child, Matrix4 transform) {
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/rendering/sliver_group.dart:342:48: Error: 'Matrix4' isn't a type.
    void applyPaintTransform(RenderSliver child, Matrix4 transform) {
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/rendering/sliver_multi_box_adaptor.dart:644:45: Error: 'Matrix4' isn't a type.
    void applyPaintTransform(RenderBox child, Matrix4 transform) {
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/rendering/sliver_padding.dart:219:48: Error: 'Matrix4' isn't a type.
    void applyPaintTransform(RenderObject child, Matrix4 transform) {
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/rendering/sliver_persistent_header.dart:291:48: Error: 'Matrix4' isn't a type.
    void applyPaintTransform(RenderObject child, Matrix4 transform) {
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/rendering/view.dart:66:12: Error: The getter 'Matrix4' isn't defined for the class 'ViewConfiguration'.
  • 'ViewConfiguration' is from 'package:flutter/src/rendering/view.dart' ('/sdks/flutter/packages/flutter/lib/src/rendering/view.dart').
    Try correcting the name to the name of an existing getter, or defining a getter or field named 'Matrix4'.
    return Matrix4.diagonal3Values(devicePixelRatio, devicePixelRatio, 1.0);
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/rendering/view.dart:219:3: Error: 'Matrix4' isn't a type.
    Matrix4? _rootTransform;
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/rendering/view.dart:289:45: Error: 'Matrix4' isn't a type.
    void applyPaintTransform(RenderBox child, Matrix4 transform) {
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/rendering/viewport.dart:795:13: Error: 'Matrix4' isn't a type.
    final Matrix4 transform = Matrix4.identity();
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/rendering/viewport.dart:795:33: Error: The getter 'Matrix4' isn't defined for the class 'RenderViewportBase'.
  • 'RenderViewportBase' is from 'package:flutter/src/rendering/viewport.dart' ('/sdks/flutter/packages/flutter/lib/src/rendering/viewport.dart').
    Try correcting the name to the name of an existing getter, or defining a getter or field named 'Matrix4'.
    final Matrix4 transform = Matrix4.identity();
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/rendering/viewport.dart:940:11: Error: 'Matrix4' isn't a type.
    final Matrix4 transform = target.getTransformTo(this);
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/rendering/viewport.dart:1220:13: Error: 'Matrix4' isn't a type.
    final Matrix4 transform = descendant.getTransformTo(viewport.parent);
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/rendering/viewport.dart:1608:48: Error: 'Matrix4' isn't a type.
    void applyPaintTransform(RenderObject child, Matrix4 transform) {
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/rendering/viewport.dart:1937:48: Error: 'Matrix4' isn't a type.
    void applyPaintTransform(RenderObject child, Matrix4 transform) {
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/services/text_boundary.dart:84:31: Error: The getter 'CharacterRange' isn't defined for the class 'CharacterBoundary'.
  • 'CharacterBoundary' is from 'package:flutter/src/services/text_boundary.dart' ('/sdks/flutter/packages/flutter/lib/src/services/text_boundary.dart').
    Try correcting the name to the name of an existing getter, or defining a getter or field named 'CharacterRange'.
    final int graphemeStart = CharacterRange.at(_text, min(position, _text.length)).stringBeforeLength;
    ^^^^^^^^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/services/text_boundary.dart:85:12: Error: The getter 'CharacterRange' isn't defined for the class 'CharacterBoundary'.
  • 'CharacterBoundary' is from 'package:flutter/src/services/text_boundary.dart' ('/sdks/flutter/packages/flutter/lib/src/services/text_boundary.dart').
    Try correcting the name to the name of an existing getter, or defining a getter or field named 'CharacterRange'.
    assert(CharacterRange.at(_text, graphemeStart).isEmpty);
    ^^^^^^^^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/services/text_boundary.dart:94:11: Error: 'CharacterRange' isn't a type.
    final CharacterRange rangeAtPosition = CharacterRange.at(_text, max(0, position + 1));
    ^^^^^^^^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/services/text_boundary.dart:94:44: Error: The getter 'CharacterRange' isn't defined for the class 'CharacterBoundary'.
  • 'CharacterBoundary' is from 'package:flutter/src/services/text_boundary.dart' ('/sdks/flutter/packages/flutter/lib/src/services/text_boundary.dart').
    Try correcting the name to the name of an existing getter, or defining a getter or field named 'CharacterRange'.
    final CharacterRange rangeAtPosition = CharacterRange.at(_text, max(0, position + 1));
    ^^^^^^^^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/services/text_boundary.dart:96:44: Error: The getter 'CharacterRange' isn't defined for the class 'CharacterBoundary'.
  • 'CharacterBoundary' is from 'package:flutter/src/services/text_boundary.dart' ('/sdks/flutter/packages/flutter/lib/src/services/text_boundary.dart').
    Try correcting the name to the name of an existing getter, or defining a getter or field named 'CharacterRange'.
    assert(nextBoundary == _text.length || CharacterRange.at(_text, nextBoundary).isEmpty);
    ^^^^^^^^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/services/text_boundary.dart:107:11: Error: 'CharacterRange' isn't a type.
    final CharacterRange rangeAtPosition = CharacterRange.at(_text, position);
    ^^^^^^^^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/services/text_boundary.dart:107:44: Error: The getter 'CharacterRange' isn't defined for the class 'CharacterBoundary'.
  • 'CharacterBoundary' is from 'package:flutter/src/services/text_boundary.dart' ('/sdks/flutter/packages/flutter/lib/src/services/text_boundary.dart').
    Try correcting the name to the name of an existing getter, or defining a getter or field named 'CharacterRange'.
    final CharacterRange rangeAtPosition = CharacterRange.at(_text, position);
    ^^^^^^^^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/services/text_formatter.dart:550:11: Error: 'CharacterRange' isn't a type.
    final CharacterRange iterator = CharacterRange(value.text);
    ^^^^^^^^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/services/text_formatter.dart:550:37: Error: Method not found: 'CharacterRange'.
    final CharacterRange iterator = CharacterRange(value.text);
    ^^^^^^^^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/services/text_formatter.dart:551:20: Error: The getter 'characters' isn't defined for the class 'String'.
    Try correcting the name to the name of an existing getter, or defining a getter or field named 'characters'.
    if (value.text.characters.length > maxLength) {
    ^^^^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/services/text_formatter.dart:580:21: Error: The getter 'characters' isn't defined for the class 'String'.
    Try correcting the name to the name of an existing getter, or defining a getter or field named 'characters'.
    newValue.text.characters.length <= maxLength) {
    ^^^^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/services/text_formatter.dart:592:27: Error: The getter 'characters' isn't defined for the class 'String'.
    Try correcting the name to the name of an existing getter, or defining a getter or field named 'characters'.
    if (oldValue.text.characters.length == maxLength && oldValue.selection.isCollapsed) {
    ^^^^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/services/text_formatter.dart:601:27: Error: The getter 'characters' isn't defined for the class 'String'.
    Try correcting the name to the name of an existing getter, or defining a getter or field named 'characters'.
    if (oldValue.text.characters.length == maxLength &&
    ^^^^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/services/text_input.dart:1365:3: Error: 'Matrix4' isn't a type.
    Matrix4? _cachedTransform;
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/services/text_input.dart:1438:58: Error: 'Matrix4' isn't a type.
    void setEditableSizeAndTransform(Size editableBoxSize, Matrix4 transform) {
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/services/text_input.dart:2003:59: Error: 'Matrix4' isn't a type.
    void _setEditableSizeAndTransform(Size editableBoxSize, Matrix4 transform) {
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/services/text_input.dart:2208:58: Error: 'Matrix4' isn't a type.
    void setEditableSizeAndTransform(Size editableBoxSize, Matrix4 transform) {}
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/services/text_input.dart:2321:58: Error: 'Matrix4' isn't a type.
    void setEditableSizeAndTransform(Size editableBoxSize, Matrix4 transform) {
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/gestures/events.dart:503:9: Error: 'Matrix4' isn't a type.
    final Matrix4? transform;
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/gestures/events.dart:535:28: Error: 'Matrix4' isn't a type.
    PointerEvent transformed(Matrix4? transform);
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/gestures/events.dart:572:35: Error: 'Matrix4' isn't a type.
    static Offset transformPosition(Matrix4? transform, Offset position) {
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/gestures/events.dart:576:11: Error: 'Vector3' isn't a type.
    final Vector3 position3 = Vector3(position.dx, position.dy, 0.0);
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/gestures/events.dart:576:31: Error: Method not found: 'Vector3'.
    final Vector3 position3 = Vector3(position.dx, position.dy, 0.0);
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/gestures/events.dart:577:11: Error: 'Vector3' isn't a type.
    final Vector3 transformed3 = transform.perspectiveTransform(position3);
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/gestures/events.dart:592:14: Error: 'Matrix4' isn't a type.
    required Matrix4? transform,
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/gestures/events.dart:615:45: Error: 'Matrix4' isn't a type.
    static Matrix4 removePerspectiveTransform(Matrix4 transform) {
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/gestures/events.dart:616:11: Error: 'Vector4' isn't a type.
    final Vector4 vector = Vector4(0, 0, 1, 0);
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/gestures/events.dart:616:28: Error: Method not found: 'Vector4'.
    final Vector4 vector = Vector4(0, 0, 1, 0);
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/gestures/events.dart:844:33: Error: 'Matrix4' isn't a type.
    PointerAddedEvent transformed(Matrix4? transform) {
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/gestures/events.dart:859:9: Error: 'Matrix4' isn't a type.
    final Matrix4 transform;
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/gestures/events.dart:862:33: Error: 'Matrix4' isn't a type.
    PointerAddedEvent transformed(Matrix4? transform) => original.transformed(transform);
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/gestures/events.dart:935:35: Error: 'Matrix4' isn't a type.
    PointerRemovedEvent transformed(Matrix4? transform) {
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/gestures/events.dart:950:9: Error: 'Matrix4' isn't a type.
    final Matrix4 transform;
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/gestures/events.dart:953:35: Error: 'Matrix4' isn't a type.
    PointerRemovedEvent transformed(Matrix4? transform) => original.transformed(transform);
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/gestures/events.dart:1052:33: Error: 'Matrix4' isn't a type.
    PointerHoverEvent transformed(Matrix4? transform) {
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/gestures/events.dart:1067:9: Error: 'Matrix4' isn't a type.
    final Matrix4 transform;
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/gestures/events.dart:1070:33: Error: 'Matrix4' isn't a type.
    PointerHoverEvent transformed(Matrix4? transform) => original.transformed(transform);
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/gestures/events.dart:1200:33: Error: 'Matrix4' isn't a type.
    PointerEnterEvent transformed(Matrix4? transform) {
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/gestures/events.dart:1215:9: Error: 'Matrix4' isn't a type.
    final Matrix4 transform;
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/gestures/events.dart:1218:33: Error: 'Matrix4' isn't a type.
    PointerEnterEvent transformed(Matrix4? transform) => original.transformed(transform);
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/gestures/events.dart:1346:32: Error: 'Matrix4' isn't a type.
    PointerExitEvent transformed(Matrix4? transform) {
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/gestures/events.dart:1362:9: Error: 'Matrix4' isn't a type.
    final Matrix4 transform;
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/gestures/events.dart:1365:32: Error: 'Matrix4' isn't a type.
    PointerExitEvent transformed(Matrix4? transform) => original.transformed(transform);
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/gestures/events.dart:1456:32: Error: 'Matrix4' isn't a type.
    PointerDownEvent transformed(Matrix4? transform) {
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/gestures/events.dart:1471:9: Error: 'Matrix4' isn't a type.
    final Matrix4 transform;
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/gestures/events.dart:1474:32: Error: 'Matrix4' isn't a type.
    PointerDownEvent transformed(Matrix4? transform) => original.transformed(transform);
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/gestures/events.dart:1573:32: Error: 'Matrix4' isn't a type.
    PointerMoveEvent transformed(Matrix4? transform) {
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/gestures/events.dart:1589:9: Error: 'Matrix4' isn't a type.
    final Matrix4 transform;
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/gestures/events.dart:1592:32: Error: 'Matrix4' isn't a type.
    PointerMoveEvent transformed(Matrix4? transform) => original.transformed(transform);
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/gestures/events.dart:1687:30: Error: 'Matrix4' isn't a type.
    PointerUpEvent transformed(Matrix4? transform) {
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/gestures/events.dart:1702:9: Error: 'Matrix4' isn't a type.
    final Matrix4 transform;
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/gestures/events.dart:1705:30: Error: 'Matrix4' isn't a type.
    PointerUpEvent transformed(Matrix4? transform) => original.transformed(transform);
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/gestures/events.dart:1803:34: Error: 'Matrix4' isn't a type.
    PointerScrollEvent transformed(Matrix4? transform) {
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/gestures/events.dart:1824:9: Error: 'Matrix4' isn't a type.
    final Matrix4 transform;
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/gestures/events.dart:1830:34: Error: 'Matrix4' isn't a type.
    PointerScrollEvent transformed(Matrix4? transform) => original.transformed(transform);
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/gestures/events.dart:1900:47: Error: 'Matrix4' isn't a type.
    PointerScrollInertiaCancelEvent transformed(Matrix4? transform) {
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/gestures/events.dart:1915:9: Error: 'Matrix4' isn't a type.
    final Matrix4 transform;
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/gestures/events.dart:1918:47: Error: 'Matrix4' isn't a type.
    PointerScrollInertiaCancelEvent transformed(Matrix4? transform) => original.transformed(transform);
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/gestures/events.dart:1991:33: Error: 'Matrix4' isn't a type.
    PointerScaleEvent transformed(Matrix4? transform) {
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/gestures/events.dart:2006:9: Error: 'Matrix4' isn't a type.
    final Matrix4 transform;
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/gestures/events.dart:2012:33: Error: 'Matrix4' isn't a type.
    PointerScaleEvent transformed(Matrix4? transform) => original.transformed(transform);
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/gestures/events.dart:2072:40: Error: 'Matrix4' isn't a type.
    PointerPanZoomStartEvent transformed(Matrix4? transform) {
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/gestures/events.dart:2087:9: Error: 'Matrix4' isn't a type.
    final Matrix4 transform;
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/gestures/events.dart:2090:40: Error: 'Matrix4' isn't a type.
    PointerPanZoomStartEvent transformed(Matrix4? transform) => original.transformed(transform);
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/gestures/events.dart:2190:41: Error: 'Matrix4' isn't a type.
    PointerPanZoomUpdateEvent transformed(Matrix4? transform) {
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/gestures/events.dart:2228:9: Error: 'Matrix4' isn't a type.
    final Matrix4 transform;
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/gestures/events.dart:2231:41: Error: 'Matrix4' isn't a type.
    PointerPanZoomUpdateEvent transformed(Matrix4? transform) => original.transformed(transform);
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/gestures/events.dart:2291:38: Error: 'Matrix4' isn't a type.
    PointerPanZoomEndEvent transformed(Matrix4? transform) {
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/gestures/events.dart:2306:9: Error: 'Matrix4' isn't a type.
    final Matrix4 transform;
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/gestures/events.dart:2309:38: Error: 'Matrix4' isn't a type.
    PointerPanZoomEndEvent transformed(Matrix4? transform) => original.transformed(transform);
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/gestures/events.dart:2400:34: Error: 'Matrix4' isn't a type.
    PointerCancelEvent transformed(Matrix4? transform) {
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/gestures/events.dart:2457:9: Error: 'Matrix4' isn't a type.
    final Matrix4 transform;
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/gestures/events.dart:2460:34: Error: 'Matrix4' isn't a type.
    PointerCancelEvent transformed(Matrix4? transform) => original.transformed(transform);
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/gestures/hit_test.dart:67:3: Error: 'Matrix4' isn't a type.
    Matrix4? _transform;
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/gestures/hit_test.dart:83:20: Error: 'Matrix4' isn't a type.
    Matrix4 multiply(Matrix4 rhs);
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/gestures/hit_test.dart:89:9: Error: 'Matrix4' isn't a type.
    final Matrix4 matrix;
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/gestures/hit_test.dart:92:20: Error: 'Matrix4' isn't a type.
    Matrix4 multiply(Matrix4 rhs) {
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/gestures/hit_test.dart:103:20: Error: 'Matrix4' isn't a type.
    Matrix4 multiply(Matrix4 rhs) {
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/gestures/hit_test.dart:113:23: Error: 'Matrix4' isn't a type.
    _transforms = [Matrix4.identity()],
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/gestures/hit_test.dart:113:32: Error: Undefined name 'Matrix4'.
    _transforms = [Matrix4.identity()],
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/gestures/hit_test.dart:147:14: Error: 'Matrix4' isn't a type.
    final List _transforms;
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/gestures/hit_test.dart:156:5: Error: 'Matrix4' isn't a type.
    Matrix4 last = _transforms.last;
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/gestures/hit_test.dart:210:22: Error: 'Matrix4' isn't a type.
    void pushTransform(Matrix4 transform) {
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/gestures/hit_test.dart:212:57: Error: The method 'Vector4' isn't defined for the class 'HitTestResult'.
  • 'HitTestResult' is from 'package:flutter/src/gestures/hit_test.dart' ('/sdks/flutter/packages/flutter/lib/src/gestures/hit_test.dart').
    Try correcting the name to the name of an existing method, or defining a method named 'Vector4'.
    _debugVectorMoreOrLessEquals(transform.getRow(2), Vector4(0, 0, 1, 0)) &&
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/gestures/hit_test.dart:213:60: Error: The method 'Vector4' isn't defined for the class 'HitTestResult'.
  • 'HitTestResult' is from 'package:flutter/src/gestures/hit_test.dart' ('/sdks/flutter/packages/flutter/lib/src/gestures/hit_test.dart').
    Try correcting the name to the name of an existing method, or defining a method named 'Vector4'.
    _debugVectorMoreOrLessEquals(transform.getColumn(2), Vector4(0, 0, 1, 0)),
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/gestures/hit_test.dart:276:37: Error: 'Vector4' isn't a type.
    bool _debugVectorMoreOrLessEquals(Vector4 a, Vector4 b, { double epsilon = precisionErrorTolerance }) {
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/gestures/hit_test.dart:276:48: Error: 'Vector4' isn't a type.
    bool _debugVectorMoreOrLessEquals(Vector4 a, Vector4 b, { double epsilon = precisionErrorTolerance }) {
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/gestures/hit_test.dart:279:13: Error: 'Vector4' isn't a type.
    final Vector4 difference = a - b;
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/gestures/monodrag.dart:308:3: Error: 'Matrix4' isn't a type.
    Matrix4? _lastTransform;
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/gestures/monodrag.dart:637:17: Error: 'Matrix4' isn't a type.
    final Matrix4? localToGlobalTransform = event.transform == null ? null : Matrix4.tryInvert(event.transform!);
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/gestures/monodrag.dart:637:84: Error: The getter 'Matrix4' isn't defined for the class 'DragGestureRecognizer'.
  • 'DragGestureRecognizer' is from 'package:flutter/src/gestures/monodrag.dart' ('/sdks/flutter/packages/flutter/lib/src/gestures/monodrag.dart').
    Try correcting the name to the name of an existing getter, or defining a getter or field named 'Matrix4'.
    final Matrix4? localToGlobalTransform = event.transform == null ? null : Matrix4.tryInvert(event.transform!);
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/gestures/monodrag.dart:742:11: Error: 'Matrix4' isn't a type.
    final Matrix4? transform = _lastTransform;
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/gestures/monodrag.dart:756:13: Error: 'Matrix4' isn't a type.
    final Matrix4? localToGlobal = transform != null ? Matrix4.tryInvert(transform) : null;
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/gestures/monodrag.dart:756:58: Error: The getter 'Matrix4' isn't defined for the class 'DragGestureRecognizer'.
  • 'DragGestureRecognizer' is from 'package:flutter/src/gestures/monodrag.dart' ('/sdks/flutter/packages/flutter/lib/src/gestures/monodrag.dart').
    Try correcting the name to the name of an existing getter, or defining a getter or field named 'Matrix4'.
    final Matrix4? localToGlobal = transform != null ? Matrix4.tryInvert(transform) : null;
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/gestures/multitap.dart:81:49: Error: 'Matrix4' isn't a type.
    void startTrackingPointer(PointerRoute route, Matrix4? transform) {
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/gestures/pointer_router.dart:19:36: Error: 'Matrix4' isn't a type.
    final Map<int, Map<PointerRoute, Matrix4?>> _routeMap = <int, Map<PointerRoute, Matrix4?>>{};
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/gestures/pointer_router.dart:19:83: Error: 'Matrix4' isn't a type.
    final Map<int, Map<PointerRoute, Matrix4?>> _routeMap = <int, Map<PointerRoute, Matrix4?>>{};
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/gestures/pointer_router.dart:20:27: Error: 'Matrix4' isn't a type.
    final Map<PointerRoute, Matrix4?> _globalRoutes = <PointerRoute, Matrix4?>{};
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/gestures/pointer_router.dart:20:68: Error: 'Matrix4' isn't a type.
    final Map<PointerRoute, Matrix4?> _globalRoutes = <PointerRoute, Matrix4?>{};
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/gestures/pointer_router.dart:29:51: Error: 'Matrix4' isn't a type.
    void addRoute(int pointer, PointerRoute route, [Matrix4? transform]) {
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/gestures/pointer_router.dart:30:29: Error: 'Matrix4' isn't a type.
    final Map<PointerRoute, Matrix4?> routes = _routeMap.putIfAbsent(
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/gestures/pointer_router.dart:32:28: Error: 'Matrix4' isn't a type.
    () => <PointerRoute, Matrix4?>{},
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/gestures/pointer_router.dart:47:29: Error: 'Matrix4' isn't a type.
    final Map<PointerRoute, Matrix4?> routes = _routeMap[pointer]!;
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/gestures/pointer_router.dart:61:44: Error: 'Matrix4' isn't a type.
    void addGlobalRoute(PointerRoute route, [Matrix4? transform]) {
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/gestures/pointer_router.dart:95:58: Error: 'Matrix4' isn't a type.
    void _dispatch(PointerEvent event, PointerRoute route, Matrix4? transform) {
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/gestures/pointer_router.dart:124:29: Error: 'Matrix4' isn't a type.
    final Map<PointerRoute, Matrix4?>? routes = _routeMap[event.pointer];
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/gestures/pointer_router.dart:125:29: Error: 'Matrix4' isn't a type.
    final Map<PointerRoute, Matrix4?> copiedGlobalRoutes = Map<PointerRoute, Matrix4?>.of(_globalRoutes);
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/gestures/pointer_router.dart:125:78: Error: 'Matrix4' isn't a type.
    final Map<PointerRoute, Matrix4?> copiedGlobalRoutes = Map<PointerRoute, Matrix4?>.of(_globalRoutes);
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/gestures/pointer_router.dart:130:27: Error: 'Matrix4' isn't a type.
    Map<PointerRoute, Matrix4?>.of(routes),
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/gestures/pointer_router.dart:138:23: Error: 'Matrix4' isn't a type.
    Map<PointerRoute, Matrix4?> referenceRoutes,
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/gestures/pointer_router.dart:139:23: Error: 'Matrix4' isn't a type.
    Map<PointerRoute, Matrix4?> copiedRoutes,
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/gestures/pointer_router.dart:141:47: Error: 'Matrix4' isn't a type.
    copiedRoutes.forEach((PointerRoute route, Matrix4? transform) {
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/gestures/recognizer.dart:511:43: Error: 'Matrix4' isn't a type.
    void startTrackingPointer(int pointer, [Matrix4? transform]) {
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/gestures/scale.dart:385:3: Error: 'Matrix4' isn't a type.
    Matrix4? _lastTransform;
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/gestures/tap.dart:231:43: Error: 'Matrix4' isn't a type.
    void startTrackingPointer(int pointer, [Matrix4? transform]) {
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/gestures/tap_and_drag.dart:1129:13: Error: 'Matrix4' isn't a type.
    final Matrix4? localToGlobal = event.transform != null ? Matrix4.tryInvert(event.transform!) : null;
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/gestures/tap_and_drag.dart:1129:64: Error: The getter 'Matrix4' isn't defined for the class 'BaseTapAndDragGestureRecognizer'.
  • 'BaseTapAndDragGestureRecognizer' is from 'package:flutter/src/gestures/tap_and_drag.dart' ('/sdks/flutter/packages/flutter/lib/src/gestures/tap_and_drag.dart').
    Try correcting the name to the name of an existing getter, or defining a getter or field named 'Matrix4'.
    final Matrix4? localToGlobal = event.transform != null ? Matrix4.tryInvert(event.transform!) : null;
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/gestures/tap_and_drag.dart:1144:11: Error: 'Matrix4' isn't a type.
    final Matrix4? localToGlobalTransform = event.transform == null ? null : Matrix4.tryInvert(event.transform!);
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/gestures/tap_and_drag.dart:1144:78: Error: The getter 'Matrix4' isn't defined for the class 'BaseTapAndDragGestureRecognizer'.
  • 'BaseTapAndDragGestureRecognizer' is from 'package:flutter/src/gestures/tap_and_drag.dart' ('/sdks/flutter/packages/flutter/lib/src/gestures/tap_and_drag.dart').
    Try correcting the name to the name of an existing getter, or defining a getter or field named 'Matrix4'.
    final Matrix4? localToGlobalTransform = event.transform == null ? null : Matrix4.tryInvert(event.transform!);
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/painting/gradient.dart:113:12: Error: The getter 'Matrix4' isn't defined for the class 'GradientRotation'.
  • 'GradientRotation' is from 'package:flutter/src/painting/gradient.dart' ('/sdks/flutter/packages/flutter/lib/src/painting/gradient.dart').
    Try correcting the name to the name of an existing getter, or defining a getter or field named 'Matrix4'.
    return Matrix4.identity()
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/painting/matrix_utils.dart:16:35: Error: 'Matrix4' isn't a type.
    static Offset? getAsTranslation(Matrix4 transform) {
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/painting/matrix_utils.dart:42:29: Error: 'Matrix4' isn't a type.
    static double? getAsScale(Matrix4 transform) {
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/painting/matrix_utils.dart:67:28: Error: 'Matrix4' isn't a type.
    static bool matrixEquals(Matrix4? a, Matrix4? b) {
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/painting/matrix_utils.dart:67:40: Error: 'Matrix4' isn't a type.
    static bool matrixEquals(Matrix4? a, Matrix4? b) {
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/painting/matrix_utils.dart:97:26: Error: 'Matrix4' isn't a type.
    static bool isIdentity(Matrix4 a) {
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/painting/matrix_utils.dart:127:32: Error: 'Matrix4' isn't a type.
    static Offset transformPoint(Matrix4 transform, Offset point) {
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/painting/matrix_utils.dart:152:34: Error: 'Matrix4' isn't a type.
    static Rect _safeTransformRect(Matrix4 transform, Rect rect) {
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/painting/matrix_utils.dart:196:29: Error: 'Matrix4' isn't a type.
    static Rect transformRect(Matrix4 transform, Rect rect) {
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/painting/matrix_utils.dart:431:36: Error: 'Matrix4' isn't a type.
    static Rect inverseTransformRect(Matrix4 transform, Rect rect) {
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/painting/matrix_utils.dart:439:17: Error: Undefined name 'Matrix4'.
    transform = Matrix4.copy(transform)..invert();
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/painting/matrix_utils.dart:500:5: Error: 'Matrix4' isn't a type.
    Matrix4 result = Matrix4.identity()
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/painting/matrix_utils.dart:500:22: Error: Undefined name 'Matrix4'.
    Matrix4 result = Matrix4.identity()
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/painting/matrix_utils.dart:509:15: Error: Undefined name 'Matrix4'.
    ? Matrix4.rotationY(angle)
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/painting/matrix_utils.dart:510:15: Error: Undefined name 'Matrix4'.
    : Matrix4.rotationX(angle)
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/painting/matrix_utils.dart:511:9: Error: Undefined name 'Matrix4'.
    ) * Matrix4.translationValues(0.0, 0.0, radius)) as Matrix4;
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/painting/matrix_utils.dart:511:57: Error: 'Matrix4' isn't a type.
    ) * Matrix4.translationValues(0.0, 0.0, radius)) as Matrix4;
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/painting/matrix_utils.dart:519:12: Error: Undefined name 'Matrix4'.
    return Matrix4.identity()
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/painting/matrix_utils.dart:520:19: Error: Method not found: 'Vector4'.
    ..setRow(0, Vector4(0, 0, 0, offset.dx))
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/painting/matrix_utils.dart:521:19: Error: Method not found: 'Vector4'.
    ..setRow(1, Vector4(0, 0, 0, offset.dy));
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/painting/matrix_utils.dart:529:37: Error: 'Matrix4' isn't a type.
    List debugDescribeTransform(Matrix4? transform) {
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/painting/star_border.dart:527:11: Error: 'Matrix4' isn't a type.
    final Matrix4 squashMatrix = Matrix4.translationValues(rect.center.dx, rect.center.dy, 0);
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/painting/star_border.dart:527:34: Error: The getter 'Matrix4' isn't defined for the class '_StarGenerator'.
  • '_StarGenerator' is from 'package:flutter/src/painting/star_border.dart' ('/sdks/flutter/packages/flutter/lib/src/painting/star_border.dart').
    Try correcting the name to the name of an existing getter, or defining a getter or field named 'Matrix4'.
    final Matrix4 squashMatrix = Matrix4.translationValues(rect.center.dx, rect.center.dy, 0);
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/painting/star_border.dart:528:27: Error: The getter 'Matrix4' isn't defined for the class '_StarGenerator'.
  • '_StarGenerator' is from 'package:flutter/src/painting/star_border.dart' ('/sdks/flutter/packages/flutter/lib/src/painting/star_border.dart').
    Try correcting the name to the name of an existing getter, or defining a getter or field named 'Matrix4'.
    squashMatrix.multiply(Matrix4.diagonal3Values(scale.dx, scale.dy, 1));
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/painting/star_border.dart:529:27: Error: The getter 'Matrix4' isn't defined for the class '_StarGenerator'.
  • '_StarGenerator' is from 'package:flutter/src/painting/star_border.dart' ('/sdks/flutter/packages/flutter/lib/src/painting/star_border.dart').
    Try correcting the name to the name of an existing getter, or defining a getter or field named 'Matrix4'.
    squashMatrix.multiply(Matrix4.rotationZ(rotation));
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/painting/star_border.dart:530:27: Error: The getter 'Matrix4' isn't defined for the class '_StarGenerator'.
  • '_StarGenerator' is from 'package:flutter/src/painting/star_border.dart' ('/sdks/flutter/packages/flutter/lib/src/painting/star_border.dart').
    Try correcting the name to the name of an existing getter, or defining a getter or field named 'Matrix4'.
    squashMatrix.multiply(Matrix4.translationValues(-rect.center.dx, -rect.center.dy, 0));
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/semantics/semantics.dart:174:112: Error: The getter 'flattened' isn't defined for the class 'List<List>'.
  • 'List' is from 'dart:core'.
  • 'SemanticsConfiguration' is from 'package:flutter/src/semantics/semantics.dart' ('/sdks/flutter/packages/flutter/lib/src/semantics/semantics.dart').
    Try correcting the name to the name of an existing getter, or defining a getter or field named 'flattened'.
    for (final SemanticsConfiguration config in [..._mergeUp, ..._siblingMergeGroups.flattened]) {
    ^^^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/semantics/semantics.dart:643:9: Error: 'Matrix4' isn't a type.
    final Matrix4? transform;
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/semantics/semantics.dart:1756:3: Error: 'Matrix4' isn't a type.
    Matrix4? _transform;
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/semantics/semantics.dart:1757:17: Error: 'Matrix4' isn't a type.
    set transform(Matrix4? value) {
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/semantics/semantics.dart:2745:12: Error: Undefined name 'Matrix4'.
    return Matrix4.identity().storage;
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/semantics/semantics.dart:3212:9: Error: 'Vector3' isn't a type.
    final Vector3 vector = Vector3(point.dx, point.dy, 0.0);
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/semantics/semantics.dart:3212:26: Error: Method not found: 'Vector3'.
    final Vector3 vector = Vector3(point.dx, point.dy, 0.0);
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/semantics/semantics.dart:3509:13: Error: 'Matrix4' isn't a type.
    final Matrix4 inverse = Matrix4.identity();
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/semantics/semantics.dart:3509:31: Error: The getter 'Matrix4' isn't defined for the class 'SemanticsOwner'.
  • 'SemanticsOwner' is from 'package:flutter/src/semantics/semantics.dart' ('/sdks/flutter/packages/flutter/lib/src/semantics/semantics.dart').
    Try correcting the name to the name of an existing getter, or defining a getter or field named 'Matrix4'.
    final Matrix4 inverse = Matrix4.identity();
    ^^^^^^^
    /sdks/flutter/packages/flutter/lib/src/widgets/_platform_selectable_region_context_menu_web.dart:89:15: Error: 'Matrix4' isn't a type.
    final Matrix4 transform = client.getTransformTo(null);
    ^^^^^^^
    lib/components/recover_password_dialog.dart:27:11: Error: Superclass has no method named 'initState'.
    super.initState();
    ^^^^^^^^^
    lib/components/recover_password_dialog.dart:26:29: Error: The getter 'widget' isn't defined for the class '_RecoverPasswordDialogState'.
  • '_RecoverPasswordDialogState' is from 'package:devtodollars/components/recover_password_dialog.dart' ('lib/components/recover_password_dialog.dart').
    Try correcting the name to the name of an existing getter, or defining a getter or field named 'widget'.
    _emailController.text = widget.email;
    ^^^^^^
    lib/components/recover_password_dialog.dart:73:18: Error: 'AuthException' isn't a type.
    } on AuthException catch (e) {
    ^^^^^^^^^^^^^
    lib/components/recover_password_dialog.dart:32:23: Error: The getter 'ref' isn't defined for the class '_RecoverPasswordDialogState'.
  • '_RecoverPasswordDialogState' is from 'package:devtodollars/components/recover_password_dialog.dart' ('lib/components/recover_password_dialog.dart').
    Try correcting the name to the name of an existing getter, or defining a getter or field named 'ref'.
    final authNotif = ref.read(authProvider.notifier);
    ^^^
    lib/components/recover_password_dialog.dart:74:15: Error: The method 'setState' isn't defined for the class '_RecoverPasswordDialogState'.
  • '_RecoverPasswordDialogState' is from 'package:devtodollars/components/recover_password_dialog.dart' ('lib/components/recover_password_dialog.dart').
    Try correcting the name to the name of an existing method, or defining a method named 'setState'.
    setState(() {
    ^^^^^^^^
    Unhandled exception:
    Unsupported operation: Unsupported invalid type InvalidType() (InvalidType). Encountered while compiling file:///workspaces/mvp-boilerplate/flutter/lib/services/auth_notifier.dart,
    which contains the type: InvalidType().
    #0 ProgramCompiler._typeCompilationError (package:dev_compiler/src/kernel/compiler.dart:3236)
    #1 ProgramCompiler._emitType (package:dev_compiler/src/kernel/compiler.dart:3197)
    #2 ProgramCompiler._emitClassSignature (package:dev_compiler/src/kernel/compiler.dart:1566)
    #3 ProgramCompiler._emitClassDeclaration (package:dev_compiler/src/kernel/compiler.dart:962)
    #4 ProgramCompiler._emitClass (package:dev_compiler/src/kernel/compiler.dart:819)
    #5 List.forEach (dart:core-patch/growable_array.dart:416)
    #6 ProgramCompiler._emitLibrary (package:dev_compiler/src/kernel/compiler.dart:757)
    #7 List.forEach (dart:core-patch/growable_array.dart:416)
    #8 ProgramCompiler.emitModule (package:dev_compiler/src/kernel/compiler.dart:486)
    #9 IncrementalJavaScriptBundler.compile (package:frontend_server/src/javascript_bundle.dart:223)
    #10 FrontendCompiler.writeJavaScriptBundle (package:frontend_server/frontend_server.dart:801)
#11 FrontendCompiler.compile (package:frontend_server/frontend_server.dart:661) #12 listenAndCompile. (package:frontend_server/frontend_server.dart:1311)

can you please indicate which flutter version should be installed?

Add example of protecting a route with subscription

Before i do this i probably need to add a pricing page within the app. And before i do that i probably need to #55

To protect a route:

  1. In route_notifier.dart, I need to make the redirect, data function async
  2. add the route i want to protect in an if statement
  3. add a await ref.read(metadataProvider.future) to retrieve the latest metadata data in the if statement (should be cached so it should be relatively fast)
  4. Check the subscription in the if statement to protect the route.

Remove AppUser

So basically if I keep the metadata and Session in one notifier I sometimes will want to update the metadata without updating the entire user and this will refresh the entire route. I don't want to do that when just updating user metadata so I should seperate them.

Here are the steps:

  1. Create metadata_notifier
  2. Change AppUser into UserMetadata
  3. Update stripe table to user_metadata
  4. Make auth_notifier only return supa.Session and remove refreshUser which grabs the UserMetadata. instead that will be in the build function of metadata_notifier

NextJS Landing Page

  • update nextjs folder to use shadcn landing page
  • add authentication using a dialog
    • sign in (pop out dialog)
    • and sign out button (top right corner)
  • update pricing page to be the same text
  • remove the account page
  • change all URLs to point to this repo and devtodollars, twitter, linkedin, etc.

For authentication component dialog I want it to look like below. but with the "don't have an account sign up?" button:
image
image

Migrate emails from postmark to loops.so

https://loops.so/docs/integrations/supabase

Loops.so is a better email platform because it not only offers transactional emails, but also offers marketing in one which makes it really easy to have an all-in-one email platform. The campaigns that you can create in loops.so is really nice and will be super helpful when growing a business especially one with an email list.

I like that it's event based so it allows us to send personalized emails based on events that occur within the app.

Also, it integrates well with stripe as well which can send emails to people that have subscribed!

[Boiler Plate] Add documentation in devtodollars docs

  • Put the following steps inside the documentation
    Steps to set up Supabase on ubuntu:
  1. Navigate to https://github.com/supabase/cli/release
  2. Find the release with the green latest tag on it, the release might located in the later pages.
  3. Download the correct package based on your processor type, and favorite package manager, for example I have dpkg package and an x86 architecture on my processor, so I downloaded supaase__linux_amd64.deb
  4. Run one of the following commands based on the type of package downloaded:
    sudo apk add --allow-untrusted <...>.apk
    sudo dpkg -i <...>.deb
    sudo rpm -i <...>.rpm
  • Add to documentation how to stop docker containers if you shut off the computer with forgeting to do supabase down

  • Add how to get the types for supabase tables to put into types_db.ts: npx supabase gen types typescript --project-id "$PROJECT_REF" --schema public

  • Add how to add restriction policies to the bucket and user tables, specifically storage buckets

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.