diff --git a/opensaas-sh/app_diff/main.wasp.diff b/opensaas-sh/app_diff/main.wasp.diff index f6fd37c2..a648f16c 100644 --- a/opensaas-sh/app_diff/main.wasp.diff +++ b/opensaas-sh/app_diff/main.wasp.diff @@ -1,7 +1,7 @@ --- template/app/main.wasp +++ opensaas-sh/app/main.wasp @@ -3,30 +3,29 @@ - version: "^0.15.0" + version: "^0.16.0" }, - title: "My Open SaaS App", diff --git a/opensaas-sh/app_diff/package-lock.json.diff b/opensaas-sh/app_diff/package-lock.json.diff index 88565e56..1cdfa557 100644 --- a/opensaas-sh/app_diff/package-lock.json.diff +++ b/opensaas-sh/app_diff/package-lock.json.diff @@ -1,6 +1,6 @@ --- template/app/package-lock.json +++ opensaas-sh/app/package-lock.json -@@ -0,0 +1,11736 @@ +@@ -0,0 +1,11737 @@ +{ + "name": "opensaas", + "lockfileVersion": 3, @@ -31,6 +31,7 @@ + "react-router-dom": "^6.26.2", + "stripe": "11.15.0", + "tailwind-merge": "^2.2.1", ++ "tailwindcss": "^3.2.7", + "vanilla-cookieconsent": "^3.0.1", + "wasp": "file:.wasp/out/sdk/wasp", + "zod": "^3.23.8" @@ -61,7 +62,6 @@ + "axios": "^1.4.0", + "express": "~4.21.0", + "jsdom": "^21.1.1", -+ "lodash.merge": "^4.6.2", + "lucia": "^3.0.1", + "mitt": "3.0.0", + "msw": "^1.1.0", @@ -74,7 +74,8 @@ + "react-router-dom": "^6.26.2", + "superjson": "^2.2.1", + "tailwindcss": "^3.2.7", -+ "vitest": "^1.2.1" ++ "vitest": "^1.2.1", ++ "zod": "^3.23.8" + }, + "devDependencies": { + "@tsconfig/node18": "latest", diff --git a/opensaas-sh/blog/src/content/docs/general/admin-dashboard.mdx b/opensaas-sh/blog/src/content/docs/general/admin-dashboard.mdx index 7a86210e..7d92ac00 100644 --- a/opensaas-sh/blog/src/content/docs/general/admin-dashboard.mdx +++ b/opensaas-sh/blog/src/content/docs/general/admin-dashboard.mdx @@ -2,7 +2,7 @@ title: Admin Dashboard banner: content: | - Open SaaS is now running on Wasp v0.15!
⚙️
If you're running an older version and would like to upgrade, please follow the migration instructions. + Open SaaS is now running on Wasp v0.16!
⚙️
If you're running an older version and would like to upgrade, please follow the migration instructions. --- import { Image } from 'astro:assets'; import dbStudio from '@assets/stripe/db-studio.png'; diff --git a/opensaas-sh/blog/src/content/docs/general/user-overview.md b/opensaas-sh/blog/src/content/docs/general/user-overview.md index b8d4b638..1edeb247 100644 --- a/opensaas-sh/blog/src/content/docs/general/user-overview.md +++ b/opensaas-sh/blog/src/content/docs/general/user-overview.md @@ -2,7 +2,7 @@ title: User Overview banner: content: | - Open SaaS is now running on Wasp v0.15!
⚙️
If you're running an older version and would like to upgrade, please follow the migration instructions. + Open SaaS is now running on Wasp v0.16!
⚙️
If you're running an older version and would like to upgrade, please follow the migration instructions. --- This reference will help you understand how the User entity works in this template. diff --git a/opensaas-sh/blog/src/content/docs/guides/analytics.md b/opensaas-sh/blog/src/content/docs/guides/analytics.md index db580d73..8dcf3cac 100644 --- a/opensaas-sh/blog/src/content/docs/guides/analytics.md +++ b/opensaas-sh/blog/src/content/docs/guides/analytics.md @@ -2,7 +2,7 @@ title: Analytics banner: content: | - Open SaaS is now running on Wasp v0.15!
⚙️
If you're running an older version and would like to upgrade, please follow the migration instructions. + Open SaaS is now running on Wasp v0.16!
⚙️
If you're running an older version and would like to upgrade, please follow the migration instructions. --- This guide will show you how to integrate analytics for your app. You can choose between [Google Analytics](#google-analytics) and [Plausible](#plausible). diff --git a/opensaas-sh/blog/src/content/docs/guides/authentication.md b/opensaas-sh/blog/src/content/docs/guides/authentication.md index 4a9c1a6a..779f5f2a 100644 --- a/opensaas-sh/blog/src/content/docs/guides/authentication.md +++ b/opensaas-sh/blog/src/content/docs/guides/authentication.md @@ -2,7 +2,7 @@ title: Authentication banner: content: | - Open SaaS is now running on Wasp v0.15!
⚙️
If you're running an older version and would like to upgrade, please follow the migration instructions. + Open SaaS is now running on Wasp v0.16!
⚙️
If you're running an older version and would like to upgrade, please follow the migration instructions. --- Setting up your app's authentication is easy with Wasp. In fact, it's already set up for you in the `main.wasp` file: diff --git a/opensaas-sh/blog/src/content/docs/guides/authorization.md b/opensaas-sh/blog/src/content/docs/guides/authorization.md index e5b67c88..781d39ef 100644 --- a/opensaas-sh/blog/src/content/docs/guides/authorization.md +++ b/opensaas-sh/blog/src/content/docs/guides/authorization.md @@ -2,7 +2,7 @@ title: Authorization banner: content: | - Open SaaS is now running on Wasp v0.15!
⚙️
If you're running an older version and would like to upgrade, please follow the migration instructions. + Open SaaS is now running on Wasp v0.16!
⚙️
If you're running an older version and would like to upgrade, please follow the migration instructions. --- This guide will help you get started with authorization in your SaaS app. diff --git a/opensaas-sh/blog/src/content/docs/guides/cookie-consent.mdx b/opensaas-sh/blog/src/content/docs/guides/cookie-consent.mdx index 769f3391..0fa63274 100644 --- a/opensaas-sh/blog/src/content/docs/guides/cookie-consent.mdx +++ b/opensaas-sh/blog/src/content/docs/guides/cookie-consent.mdx @@ -2,7 +2,7 @@ title: Cookie Consent Modal banner: content: | - Open SaaS is now running on Wasp v0.15!
⚙️
If you're running an older version and would like to upgrade, please follow the migration instructions. + Open SaaS is now running on Wasp v0.16!
⚙️
If you're running an older version and would like to upgrade, please follow the migration instructions. --- import { Image } from 'astro:assets'; import cookieBanner from '@assets/cookie-consent/cookiebanner.png'; diff --git a/opensaas-sh/blog/src/content/docs/guides/deploying.mdx b/opensaas-sh/blog/src/content/docs/guides/deploying.mdx index 73195b8f..315260f8 100644 --- a/opensaas-sh/blog/src/content/docs/guides/deploying.mdx +++ b/opensaas-sh/blog/src/content/docs/guides/deploying.mdx @@ -2,7 +2,7 @@ title: Deploying banner: content: | - Open SaaS is now running on Wasp v0.15!
⚙️
If you're running an older version and would like to upgrade, please follow the migration instructions. + Open SaaS is now running on Wasp v0.16!
⚙️
If you're running an older version and would like to upgrade, please follow the migration instructions. --- import { Image } from 'astro:assets'; import npmVersion from '@assets/stripe/npm-version.png'; diff --git a/opensaas-sh/blog/src/content/docs/guides/email-sending.mdx b/opensaas-sh/blog/src/content/docs/guides/email-sending.mdx index 07c1547d..980a7a59 100644 --- a/opensaas-sh/blog/src/content/docs/guides/email-sending.mdx +++ b/opensaas-sh/blog/src/content/docs/guides/email-sending.mdx @@ -2,7 +2,7 @@ title: Email Sending banner: content: | - Open SaaS is now running on Wasp v0.15!
⚙️
If you're running an older version and would like to upgrade, please follow the migration instructions. + Open SaaS is now running on Wasp v0.16!
⚙️
If you're running an older version and would like to upgrade, please follow the migration instructions. --- import { Tabs, TabItem } from '@astrojs/starlight/components'; diff --git a/opensaas-sh/blog/src/content/docs/guides/file-uploading.mdx b/opensaas-sh/blog/src/content/docs/guides/file-uploading.mdx index 91987bf4..15448fae 100644 --- a/opensaas-sh/blog/src/content/docs/guides/file-uploading.mdx +++ b/opensaas-sh/blog/src/content/docs/guides/file-uploading.mdx @@ -2,7 +2,7 @@ title: File Uploading banner: content: | - Open SaaS is now running on Wasp v0.15!
⚙️
If you're running an older version and would like to upgrade, please follow the migration instructions. + Open SaaS is now running on Wasp v0.16!
⚙️
If you're running an older version and would like to upgrade, please follow the migration instructions. --- import { Image } from 'astro:assets'; import findS3 from '@assets/file-uploads/find-s3.png'; diff --git a/opensaas-sh/blog/src/content/docs/guides/payments-integration.mdx b/opensaas-sh/blog/src/content/docs/guides/payments-integration.mdx index 915fda0a..e6e67a7c 100644 --- a/opensaas-sh/blog/src/content/docs/guides/payments-integration.mdx +++ b/opensaas-sh/blog/src/content/docs/guides/payments-integration.mdx @@ -2,7 +2,7 @@ title: Payments Integration banner: content: | - Open SaaS is now running on Wasp v0.15!
⚙️
If you're running an older version and would like to upgrade, please follow the migration instructions. + Open SaaS is now running on Wasp v0.16!
⚙️
If you're running an older version and would like to upgrade, please follow the migration instructions. --- import { Image } from 'astro:assets'; import testApiKeys from '@assets/stripe/api-keys.png'; diff --git a/opensaas-sh/blog/src/content/docs/guides/seo.mdx b/opensaas-sh/blog/src/content/docs/guides/seo.mdx index 9278885c..c7137ff3 100644 --- a/opensaas-sh/blog/src/content/docs/guides/seo.mdx +++ b/opensaas-sh/blog/src/content/docs/guides/seo.mdx @@ -2,7 +2,7 @@ title: SEO banner: content: | - Open SaaS is now running on Wasp v0.15!
⚙️
If you're running an older version and would like to upgrade, please follow the migration instructions. + Open SaaS is now running on Wasp v0.16!
⚙️
If you're running an older version and would like to upgrade, please follow the migration instructions. --- import { Image } from 'astro:assets'; import openSaaSGoogle from '@assets/seo/open-saas-google.png'; diff --git a/opensaas-sh/blog/src/content/docs/guides/tests.md b/opensaas-sh/blog/src/content/docs/guides/tests.md index 46e4b9fa..7b180a86 100644 --- a/opensaas-sh/blog/src/content/docs/guides/tests.md +++ b/opensaas-sh/blog/src/content/docs/guides/tests.md @@ -2,7 +2,7 @@ title: Tests banner: content: | - Open SaaS is now running on Wasp v0.15!
⚙️
If you're running an older version and would like to upgrade, please follow the migration instructions. + Open SaaS is now running on Wasp v0.16!
⚙️
If you're running an older version and would like to upgrade, please follow the migration instructions. --- This guide will show you how to use the included end-to-end (e2e) tests for your Open SaaS application. diff --git a/opensaas-sh/blog/src/content/docs/index.mdx b/opensaas-sh/blog/src/content/docs/index.mdx index 935cf909..d88f003f 100644 --- a/opensaas-sh/blog/src/content/docs/index.mdx +++ b/opensaas-sh/blog/src/content/docs/index.mdx @@ -2,7 +2,7 @@ title: Introduction banner: content: | - Open SaaS is now running on Wasp v0.15!
⚙️
If you're running an older version and would like to upgrade, please follow the migration instructions. + Open SaaS is now running on Wasp v0.16!
⚙️
If you're running an older version and would like to upgrade, please follow the migration instructions. --- import HiddenLLMHelper from '../../components/HiddenLLMHelper.astro'; diff --git a/opensaas-sh/blog/src/content/docs/start/getting-started.mdx b/opensaas-sh/blog/src/content/docs/start/getting-started.mdx index 5cf55feb..cb1a13a2 100644 --- a/opensaas-sh/blog/src/content/docs/start/getting-started.mdx +++ b/opensaas-sh/blog/src/content/docs/start/getting-started.mdx @@ -2,7 +2,7 @@ title: Getting Started banner: content: | - Open SaaS is now running on Wasp v0.15!
⚙️
If you're running an older version and would like to upgrade, please follow the migration instructions. + Open SaaS is now running on Wasp v0.16!
⚙️
If you're running an older version and would like to upgrade, please follow the migration instructions. --- import VideoPlayer from '../../../components/VideoPlayer.astro'; diff --git a/opensaas-sh/blog/src/content/docs/start/guided-tour.md b/opensaas-sh/blog/src/content/docs/start/guided-tour.md index 85113421..cf1c6298 100644 --- a/opensaas-sh/blog/src/content/docs/start/guided-tour.md +++ b/opensaas-sh/blog/src/content/docs/start/guided-tour.md @@ -2,7 +2,7 @@ title: Guided Tour banner: content: | - Open SaaS is now running on Wasp v0.15!
⚙️
If you're running an older version and would like to upgrade, please follow the migration instructions. + Open SaaS is now running on Wasp v0.16!
⚙️
If you're running an older version and would like to upgrade, please follow the migration instructions. --- Awesome, you now have your very own SaaS app up and running! But, first, here are some important things you need to know about your app in its current state: diff --git a/template/app/.cursorrules b/template/app/.cursorrules new file mode 100644 index 00000000..eee00945 --- /dev/null +++ b/template/app/.cursorrules @@ -0,0 +1,52 @@ +// Wasp Import Rules +- Path to Wasp functions within .ts files must come from 'wasp', not '@wasp'! + ✓ import { Task } from 'wasp/entities' + ✓ import type { GetTasks } from 'wasp/server/operations' + ✓ import { getTasks, useQuery } from 'wasp/client/operations' + ✗ import { getTasks, useQuery } from '@wasp/...' + ✗ import { getTasks, useQuery } from '@src/feature/operations.ts' + +- Path to external imports within 'main.wasp' must start with "@src/"! + ✓ component: import { LoginPage } from "@src/client/pages/auth/LoginPage.tsx" + ✗ component: import { LoginPage } from "@client/pages/auth/LoginPage.tsx" +- In the client's root component, use the Outlet component rather than children + ✓ import { Outlet } from 'react-router-dom'; + +// Wasp DB Schema Rules +- Add databse models to the 'schema.prisma' file, NOT to 'main.wasp' as "entities" +- Do NOT add a db.system nor a db.prisma property to 'main.wasp'. This is taken care of in 'schema.prisma' +- Keep the 'schema.prisma' within the root of the project + +// Wasp Operations +- Types are generated automatically from the function definition in 'main.wasp', + ✓ import type { GetTimeLogs, CreateTimeLog, UpdateTimeLog } from 'wasp/server/operations' +- Wasp also generates entity types based on the models in 'schema.prisma' + ✓ import type { Project, TimeLog } from 'wasp/entities' +- Make sure that all Entities that should be included in the operations context are defined in its definition in 'main.wasp' + ✓ action createTimeLog { fn: import { createTimeLog } from "@src/server/timeLogs/operations.js", entities: [TimeLog, Project] } + +// Wasp Auth +- When creating Auth pages, use the LoginForm and SignupForm components provided by Wasp + ✓ import { LoginForm } from 'wasp/client/auth' +- Wasp takes care of creating the user's auth model id, username, and password for a user, so a user model DOES NOT need these properties + ✓ model User { id Int @id @default(autoincrement()) } + +// Wasp Dependencies +- Do NOT add dependencies to 'main.wasp' +- Install dependencies via 'npm install' instead + +// Wasp +- Use the latest Wasp version, ^0.16.0 +- Always use typescript for Wasp code. +- When creating Wasp operations (queries and actions) combine them into an operations.ts file within the feature directory rather than into separate queries.ts and actions.ts files + +// React +- Use relative imports for other react components +- If importing a function from an operations file, defer to the wasp import rules + +// CSS +- Use Tailwind CSS for styling. +- Do not use inline styles unless necessary + +// General +- Use single quotes \ No newline at end of file diff --git a/template/app/main.wasp b/template/app/main.wasp index aeb40379..6dd25fa3 100644 --- a/template/app/main.wasp +++ b/template/app/main.wasp @@ -1,6 +1,6 @@ app OpenSaaS { wasp: { - version: "^0.15.0" + version: "^0.16.0" }, title: "My Open SaaS App", diff --git a/template/app/tsconfig.json b/template/app/tsconfig.json index 4932b229..d28eb469 100644 --- a/template/app/tsconfig.json +++ b/template/app/tsconfig.json @@ -5,6 +5,8 @@ // compiler. Proper TS compiler configuration in Wasp is coming soon :) { "compilerOptions": { + "composite": true, + "outDir": ".wasp/out/user", "module": "esnext", "target": "esnext", // We're bundling all code in the end so this is the most appropriate option, @@ -32,10 +34,5 @@ // Source 2: https://github.com/testing-library/jest-dom/issues/546#issuecomment-1889884843 "node_modules/@types" ], - // Since this TS config is used only for IDE support and not for - // compilation, the following directory doesn't exist. We need to specify - // it to prevent this error: - // https://stackoverflow.com/questions/42609768/typescript-error-cannot-write-file-because-it-would-overwrite-input-file - "outDir": ".wasp/phantom" } }