Skip to content

Commit fbb4551

Browse files
committed
Set default email filter to undefined
1 parent 90a0ddb commit fbb4551

File tree

188 files changed

+21619
-1
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

188 files changed

+21619
-1
lines changed

opensaas-sh/app/.cursorrules

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
// Wasp Import Rules
2+
- Path to Wasp functions within .ts files must come from 'wasp', not '@wasp'!
3+
✓ import { Task } from 'wasp/entities'
4+
✓ import type { GetTasks } from 'wasp/server/operations'
5+
✓ import { getTasks, useQuery } from 'wasp/client/operations'
6+
✗ import { getTasks, useQuery } from '@wasp/...'
7+
✗ import { getTasks, useQuery } from '@src/feature/operations.ts'
8+
9+
- Path to external imports within 'main.wasp' must start with "@src/"!
10+
✓ component: import { LoginPage } from "@src/client/pages/auth/LoginPage.tsx"
11+
✗ component: import { LoginPage } from "@client/pages/auth/LoginPage.tsx"
12+
- In the client's root component, use the Outlet component rather than children
13+
✓ import { Outlet } from 'react-router-dom';
14+
15+
// Wasp DB Schema Rules
16+
- Add databse models to the 'schema.prisma' file, NOT to 'main.wasp' as "entities"
17+
- Do NOT add a db.system nor a db.prisma property to 'main.wasp'. This is taken care of in 'schema.prisma'
18+
- Keep the 'schema.prisma' within the root of the project
19+
20+
// Wasp Operations
21+
- Types are generated automatically from the function definition in 'main.wasp',
22+
✓ import type { GetTimeLogs, CreateTimeLog, UpdateTimeLog } from 'wasp/server/operations'
23+
- Wasp also generates entity types based on the models in 'schema.prisma'
24+
✓ import type { Project, TimeLog } from 'wasp/entities'
25+
- Make sure that all Entities that should be included in the operations context are defined in its definition in 'main.wasp'
26+
✓ action createTimeLog { fn: import { createTimeLog } from "@src/server/timeLogs/operations.js", entities: [TimeLog, Project] }
27+
28+
// Wasp Auth
29+
- When creating Auth pages, use the LoginForm and SignupForm components provided by Wasp
30+
✓ import { LoginForm } from 'wasp/client/auth'
31+
- 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
32+
✓ model User { id Int @id @default(autoincrement()) }
33+
34+
// Wasp Dependencies
35+
- Do NOT add dependencies to 'main.wasp'
36+
- Install dependencies via 'npm install' instead
37+
38+
// Wasp
39+
- Use the latest Wasp version, ^0.16.0
40+
- Always use typescript for Wasp code.
41+
- 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
42+
43+
// React
44+
- Use relative imports for other react components
45+
- If importing a function from an operations file, defer to the wasp import rules
46+
47+
// CSS
48+
- Use Tailwind CSS for styling.
49+
- Do not use inline styles unless necessary
50+
51+
// General
52+
- Use single quotes

opensaas-sh/app/.env.client

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
REACT_APP_GOOGLE_ANALYTICS_ID=G-H3LSJCK95H
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
# All client-side env vars must start with REACT_APP_ https://wasp.sh/docs/project/env-vars
2+
3+
# See https://docs.opensaas.sh/guides/analytics/#google-analytics
4+
REACT_APP_GOOGLE_ANALYTICS_ID=G-...
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
# NOTE: you can let Wasp set up your Postgres DB by running `wasp start db` in a separate terminal window.
2+
# then, in a new terminal window, run `wasp db migrate-dev` and finally `wasp start`.
3+
# If you use `wasp start db` then you DO NOT need to add a DATABASE_URL env variable here.
4+
# DATABASE_URL=
5+
6+
# For testing, go to https://dashboard.stripe.com/test/apikeys and get a test stripe key that starts with "sk_test_..."
7+
STRIPE_API_KEY=sk_test_...
8+
# After downloading starting the stripe cli (https://stripe.com/docs/stripe-cli) with `stripe listen --forward-to localhost:3001/payments-webhook` it will output your signing secret
9+
STRIPE_WEBHOOK_SECRET=whsec_...
10+
# You can find your Stripe customer portal URL in the Stripe Dashboard under the 'Customer Portal' settings.
11+
STRIPE_CUSTOMER_PORTAL_URL=https://billing.stripe.com/...
12+
13+
# For testing, create a new store in test mode on https://lemonsqueezy.com
14+
LEMONSQUEEZY_API_KEY=eyJ...
15+
# After creating a store, you can find your store id in the store settings https://app.lemonsqueezy.com/settings/stores
16+
LEMONSQUEEZY_STORE_ID=012345
17+
# define your own webhook secret when creating a new webhook on https://app.lemonsqueezy.com/settings/webhooks
18+
LEMONSQUEEZY_WEBHOOK_SECRET=my-webhook-secret
19+
20+
# If using Stripe, go to https://dashboard.stripe.com/test/products and click on + Add Product
21+
# If using Lemon Squeezy, go to https://app.lemonsqueezy.com/products and create new products and variants
22+
PAYMENTS_HOBBY_SUBSCRIPTION_PLAN_ID=012345
23+
PAYMENTS_PRO_SUBSCRIPTION_PLAN_ID=012345
24+
PAYMENTS_CREDITS_10_PLAN_ID=012345
25+
26+
# set this as a comma-separated list of emails you want to give admin privileges to upon registeration
27+
28+
29+
# see our guide for setting up google auth: https://wasp.sh/docs/auth/social-auth/google
30+
GOOGLE_CLIENT_ID=722...
31+
GOOGLE_CLIENT_SECRET=GOC...
32+
33+
# get your sendgrid api key at https://app.sendgrid.com/settings/api_keys
34+
SENDGRID_API_KEY=test...
35+
36+
# (OPTIONAL) get your openai api key at https://platform.openai.com/account
37+
OPENAI_API_KEY=sk-k...
38+
39+
# (OPTIONAL) get your plausible api key at https://plausible.io/login or https://your-plausible-instance.com/login
40+
PLAUSIBLE_API_KEY=gUTgtB...
41+
# You will find your site id in the Plausible dashboard. It will look like 'opensaas.sh'
42+
PLAUSIBLE_SITE_ID=yoursite.com
43+
PLAUSIBLE_BASE_URL=https://plausible.io/api # if you are self-hosting plausible, change this to your plausible instance's base url
44+
45+
# (OPTIONAL) get your google service account key at https://console.cloud.google.com/iam-admin/serviceaccounts
46+
47+
# Make sure you convert the private key within the JSON file to base64 first with `echo -n "PRIVATE_KEY" | base64`. see the docs for more info.
48+
GOOGLE_ANALYTICS_PRIVATE_KEY=LS02...
49+
# You will find your Property ID in the Google Analytics dashboard. It will look like '987654321'
50+
GOOGLE_ANALYTICS_PROPERTY_ID=123456789
51+
52+
# (OPTIONAL) get your aws s3 credentials at https://console.aws.amazon.com and create a new IAM user with S3 access
53+
AWS_S3_IAM_ACCESS_KEY=ACK...
54+
AWS_S3_IAM_SECRET_KEY=t+33a...
55+
AWS_S3_FILES_BUCKET=your-bucket-name
56+
AWS_S3_REGION=your-region

opensaas-sh/app/.env.vault

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
#/-------------------.env.vault---------------------/
2+
#/ cloud-agnostic vaulting standard /
3+
#/ [how it works](https://dotenv.org/env-vault) /
4+
#/--------------------------------------------------/
5+
6+
# development
7+
DOTENV_VAULT_DEVELOPMENT="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"
8+
DOTENV_VAULT_DEVELOPMENT_VERSION=12
9+
10+
# ci
11+
DOTENV_VAULT_CI="pveNDc605iqf5ZOh9mvYpFOc925852DGrvz7y+vs82ub3bZvTiLhJMuJKZEDtyjn7yBUdfMRsAP6wAL8/73te+4y7K56lT48MuvFlpvwM9ERkCzJY1yZ6ib3eBzTax/jon2H5kfEHBM9TRIa5B8JrCHbYqhcrnxj0VyLEa4x1I4pMTdesRZ+907FTdExaRSFFujdkUaScytOV93DTr2lQZpUGBga5CbKr3KyeSS1+ONGSWc+BQiAkdhmnvPsyKHnWRKHSFVhInne2W00LFZLBZ56I4+G7D+x+ze3/WNb5GSq7eNlVwnTJgj5AXJBjtAV/uD7cmOnJ3h+lOkvz3Wry10BaICTAx5SVfOuD5Pr/FLgR2zJau+pgqhRdcp7gG4y2thWN5ZtlLGnJlL7xgnRaD+oIYBn6fg8CCZsnsX2XZHAzJcgntph2pUd0At4UawSijDVZuylcneNdF3CJ68/fcqqpR94LYU61w4WasrAWj1hFiRV1MTpLkdQWTMT6K5k5TDouuljI3nt+Upf9mDK7efjy7OTiiArNxKpUxUy31Kl0TgWTsttDFbcOGwbsxq1t/Tu9Ph0eEhwHc2dTUuSuhV+PHxE8GwUvGiIDBbAZZq7ZyeLc5btdP++8zdXBtYM7bIa9qubaCWakruk31w6Gm5ySjGY+R1HGURldXJmypsAEcu5kK3IX4Z8IubF79T8ZvutLdoXJPSaH9x8ij7EcamTVfZPmekj6FpI3sqy7rmaUup73MBld9a3r9AQTzXbEmR+2xbK488D1il8PUqu9J3QkUeF2rpB97Uy2mgl1zF8VXiGkdP1Hpqeck8FpS89GWFF4FA3oBE/Keqvqvvs/f+KzDn2AvHHwrT6fnVBdeuSp4hK+sSkig1rh+1P69zYjIDqpph0kT+Ri7uNMkbrXX7iT5he9J1LrXtiM/DLxXqi8M3FfeN7aaSxQ2nzac1mlN+vwsIqJbzOSm+ABGHNJNjPjBZpMbeBZsFwogaCbFd2oorp02h6yC6741qwH7gFEr1EJVcu+TJspHyKpq4TFIk+srRMhuCqwUAkdzY4skjEGVhxxYMiKAtRg5IKYICqbfNsestMipAcf22teriGnmqBe9Yuzq9IXZXRcl/etagr0/B3SQhNlVj2u9VMBfhj5ZY+QcQDfSjqOcW/DyphyBU4T1/rHn1x5RznCvtbOPZ+XXFApZaeoKzj/s8JxHzM8aegITx3jVRwXnr0/0FnHTnC34b124K6HM3oKxdPdrtACgW8gH+mgXCaStBqwBdk1aV62+YQxWdHXjy9FAvTF8BktcxwE0TXC5Qu0JsoS8uYbbQmaQCNWIJWF/KptW+g9gkKDBV2Iq5mXwMLHzCtzxGarj5jqznVEX4OdbYbgSOZ5mB5JEU2OwSn2QtzqUVquAN+DygbDVrh1+KA9bk4HMt38rMKHV/i9VBHkuApYT7OUIexCu4jxUDBnid/Hnm3OfMvXrUesoqFv2cYEHX8R/jvhLx36jEWeaTYL+e9XFpSLlWJTGc7wAg0Zj+XJlNtLhFlB6pw"
12+
DOTENV_VAULT_CI_VERSION=8
13+
14+
# staging
15+
DOTENV_VAULT_STAGING="nAXVAHQaoF1R6J23PDrfp6kH0L+nXmZaI0OUfcCBU7QSfP+K3mbkdO92cbKVUN6ycc1wxRue6BFLEUgBLuCJQwUdKYevK81fs/ACrHYxuW6Px85FG3NJVLGvgF/3qiqu0RRfcpeB6lYJCAPFsYcoA9Cx8QDkYmvSlWAGmLJQ7cqzHUNlveOqtrXsLFV2OjlWjlYD1l7VQkaXnsY+Mij60DbRIadusoDuAB3z5m7N8/ogMOGENlUl9HRJJ4ppcJiHoBm7pxrLpK0oubx3KEDTSkPVlpNb1YYMeU2VKiGYCOMyXX8IguISrrgU4hHEvbLM8F3gnKHyx59qbwU/32yX7ofIIPsTLLTwD+mHWElPoLs9WWq249RYEmRT7w5iuCdjl9Qlr36EJKPYc7UG+P0DZROb7pXcbtYg8/gfaCXOQG5Ue2FMon4bEphkmY1CKaJKtPTXNuecDVTa8O4hEM65xrEClieVUgexEaM0g7fEUo8wOljZx96gG8Mf4RqHX3xy4M0d4/2UluE053kavUaTULhRPG/oTHIGiKFRnG0BfgQFcGRXkFgLG9zerVAoWEGAcBGHn5NECIUWqaD2Z7sdEZd9R0SZmtwUXoPV1jqHNeKEvt7fUN8xcPsV1MFAUi2cAyGLkrl541KbWpU0IpHK1pIkbfUVyDOL4htSD/SajhtlyJ79q7Xd5sKsb273ZQsmtk3ZREBjQUFA2NP+fPH7ifttVeWi3EFUi8+8cWwgNHM6Cn7LaFitah6+DcCQ6+l7SneFTEbzMlprzazBBL/Gu4kr6pNXGX0RZnR8uhs6aZZgV2h9V14s0uZx3EcAFqC3g+I5X08Fi+2ERpcfWUvFdjx5akmDQllSB+oqy6SxiJvqFnfWvVPQNhx1xh2x8OplZbzykEJ+Tfl0mlc5UHHoLQqje0jagBRSHWQbxC0jIGGyqdhnz3uG672krM/zTTc2wKWMk4EZFDG7Yc7oz3DcJXjFBgxEagd9jYxqLIN0RAH9pq+0aUP7daz0CbX+xhTd988dl+LblcnEN59XEsBOhWCd5bm51KJZcKQ1UpsVVPGHnTT7MPE2+6BheEr1dgu/LDUPDW8NT0QwBUwXwxH1ROuTOu2+LWNdFrV11sEpKGfW2bjqrkpbx/xovahbFyCSq12T0EBInAFF5bq2pB0Ik2vfEH8gNL0Z+FoqH0/aDrSuw6j8xqmd2rKL3XwL5bYVZDCc1isAWXESA9CHHTSx1NGoa1kpunJkGJY//2rn5srK9RlOOHxxUrtqVBMfEGsj7qIv/Ebsgr3dvFpdVXiRZ5s3KZZs6YlSXyukklehkjtYoMM2TaZ478ioFOtD8yx12PjI3Pfoapo2La2boM48RFcipmVNpWNsLjGXaYyhYVV3RBsZAMvkOnYRVFUiZ50+ETdfizX0H23+mmkBt8FjNqHhvg9BIRaYnKTar1FPAd840lo4w2e7n2mKufHwykI5ILrJV0ozhPy7Yr8kltPiQYjpy1ua2scUdnKCngdX0KjqNQz072e6uYlhRpOib6CEwZXqMbr/"
16+
DOTENV_VAULT_STAGING_VERSION=8
17+
18+
# production
19+
DOTENV_VAULT_PRODUCTION="zGpYx7O6vRv3vYt0aW1H6UF3TSi6DUFgqjeKzkNcJukFWQWvTgX5HYtLKQnBAGCDpuWY+KWfiFGNu/zVouo5LTlQb6apzBLzj0dr+PxxDpjXe8s+q7OSPH7Ist4UiVurC2nAMjgFsUpDA2LUkfPOuWPRvg1UGYjTaxEADTYCI/vk0Uegv4R11K1/HcCGXlliJk2QAVaT5ZYSo0VKvcRu5HYHSX4aAwJgnucm3xvNmPn9Cjkxx1jZL5jYfzLS1etDEPn6slDj88NzZ8BvXHeSJUftpR352azOJpL0GbSKrwoPNYU9F2JCthilLqPZPC6LJzg0/4p5vUKA83gqnDnUxEHR+ZlNK0MRTQPEwrZitruOaP1ggWIsEJA/DZFMLA5oQrq4kp+p2E99YbsPNmV0LfvsA6LtqKv393jsuzSdJ94zeLhQlRRECiTQRVEee3ug5tJ0f34N7acRSv4EdgriKp8poIsE4miVK2xXwrek9jRxeXLHzu7Oo8yBkYaX2DqtXyxf+8Qq2WgvdRm9QgfGdiwftYsjXO52jhHI7z7bJ3R/W5BR+Z0QbR83LR3ZWdI+AYY9F2CkYF62nW5TVxiWU0M4DZ5KUgVo+iNgm+AV0nefgFvud6Ln3VtNcb2bT0RFAw4MJK0LyYlNewZBJQhlfRiN+3xJKqLbDKMlhGmSHF8RRNYN9MfKwOfF62jNFlwPjgyGCjuQL96L97z50Q63TMbpEciR0uNcMavIADPs1qDhCSkYO4rQO1IgOUF34trra9KKRfoP2UdDJhiqvlTQ2Ygu2uc164Vho0E003jlBBZBI+UUJhPz4cYTtFJjpinRCp/Q0mUeiTLbo1V7T32IQ+ZkUqO7FRuwxR282OzKQVRZiUxuOAa7WxdQzrcXbCOcCvJWX8hTVrSim9z+NAFxNyTCwVBhek9EfwCfxJSCuFuI9axlb6xA1sZ/61G5+wuKeEpUvlTbQC/ZT1QJqpKMmujEePAfW++dzJJgW/nX9o0CIt3KTzwVzImAe+/oNhzKn0TbzsvMqeOaTgymo2re0Rdw3P/Fk5SUQTM7+2GIFC+iRC5a3LN7UOFP+UdQ21J+WGkkl+yvJyyjY3IRSoFWqSCU7BAjULmJmtkl1Y/60vIj+GET5hu7VGaTlIgaWiVZc4eGAu6UAeGzasTjYWNQh50p44VxQlYBijJC+JUhzPkFOLjaLx6rRZzTQVl9NUxIxdkaOn+BImJQadaC2Ad3YOMpsLVJF/p25fi2L2e2MtsDdcx2ZNlpV1GIrYGqMIiujPdpoMzibj4VmObVMB6dazpyqgAf/QXdGguyv/4JJBcNUNPbqHqMl0yY+DzGzxPCKx6WViR63HZJeC5hJE39wNEgeYGJcXrL5K2siwrFENns8Os93aoE/8xgiPdj3vLQmcL0Z30XEqPl6/V4mTgc2Oa1SAi1NGLXnVsYJ/h1Rr4a9T11zkKhRCIvT4Jd5WpvGjG3f9t7YUigb6BqlMc0BTJ6ufQP/xBBOHqzoUs3gVk4HTMDfpYwO9k9SJNkfWBn1iV102BJ"
20+
DOTENV_VAULT_PRODUCTION_VERSION=8
21+
22+
#/----------------settings/metadata-----------------/
23+
DOTENV_VAULT="vlt_47e3eeb0730e831e688049600e59f8975260a1f00302ae08684ed87ba67872d0"
24+
DOTENV_API_URL="https://vault.dotenv.org"
25+
DOTENV_CLI="npx dotenv-vault@latest"

opensaas-sh/app/.gitignore

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
.wasp/
2+
node_modules/
3+
4+
# Ignore all dotenv files by default to prevent accidentally committing any secrets.
5+
# To include specific dotenv files, use the `!` operator or adjust these rules.
6+
.env
7+
.env.*
8+
9+
# These two we added only because dotenv-vault keeps adding them if it doesn't find them,
10+
# even though we don't need them. Remove them once dotenv-vault stops doing that.
11+
.env*
12+
.flaskenv*
13+
14+
# Don't ignore example dotenv files.
15+
!.env.example
16+
!.env.*.example
17+
18+
# We don't want to ignore .env.client as it doesn't have any secrets.
19+
!.env.client
20+
# These are config files for dotenv-vault, so we don't want to ignore them.
21+
!.env.project
22+
!.env.vault

opensaas-sh/app/.waspignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
# Ignore editor tmp files
2+
**/*~
3+
**/#*#

opensaas-sh/app/.wasproot

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
File marking the root of Wasp project.

opensaas-sh/app/README.md

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
# opensaas.sh (demo) app
2+
3+
This is a Wasp app based on Open Saas template with minimal modifications that make it into a demo app that showcases Open Saas's abilities.
4+
5+
It is deployed to https://opensaas.sh and serves both as a landing page for Open Saas and as a demo app.
6+
7+
## Development
8+
9+
### .env files
10+
`.env.client` file is versioned, but `.env.server` file you have to obtain by running `npm run env:pull`, since it has secrets in it.
11+
This will generate `.env.server` based on the `.env.vault`.
12+
We are using https://vault.dotenv.org to power this and have an account/organization up there.
13+
If you modify .env.server and want to persist the changes (for yourself and for the other team members), do `npm run env:push`.
14+
15+
### Running locally
16+
- Make sure you have the `.env.client` and `.env.server` files with correct dev values in the root of the project.
17+
- Run the database with `wasp start db` and leave it running.
18+
- Run `wasp start` and leave it running.
19+
- [OPTIONAL]: If this is the first time starting the app, or you've just made changes to your entities/prisma schema, also run `wasp db migrate-dev`.
20+
21+
## Deployment
22+
23+
This app is deployed to fly.io, Wasp org, via `wasp deploy fly deploy`.
24+
25+
You can run `npm run deploy` to deploy it via `wasp deploy fly deploy` with required client side env vars correctly set.

opensaas-sh/app/fly-client.toml

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
# fly.toml app configuration file generated for open-saas-wasp-sh-client on 2023-12-04T12:34:07+01:00
2+
#
3+
# See https://fly.io/docs/reference/configuration/ for information about how to use this file.
4+
#
5+
6+
app = "open-saas-wasp-sh-client"
7+
primary_region = "ams"
8+
9+
[build]
10+
11+
[http_service]
12+
internal_port = 8043
13+
force_https = true
14+
auto_stop_machines = true
15+
auto_start_machines = true
16+
min_machines_running = 0
17+
processes = ["app"]
18+
19+
[http_service.http_options.response]
20+
pristine = true
21+
22+
[[vm]]
23+
cpu_kind = "shared"
24+
cpus = 1
25+
memory_mb = 1024

0 commit comments

Comments
 (0)