-
Notifications
You must be signed in to change notification settings - Fork 10
Add new basic
starter for starters
#28
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: dev
Are you sure you want to change the base?
Conversation
This reverts commit 8b6ad80.
…er-template # Conflicts: # README.md
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
This PR introduces a new "basic" starter template, adding core UI pages, authentication flows, database schema, Tailwind styling, and configuration for linting and formatting.
- Added authentication pages (login, signup, email verification, password reset) and header/navigation.
- Defined Prisma models for User, Task, and Tag with relationships and corresponding migrations.
- Configured Tailwind, ESLint, Prettier, and updated README documentation.
Reviewed Changes
Copilot reviewed 49 out of 49 changed files in this pull request and generated 4 comments.
Show a summary per file
File | Description |
---|---|
basic/src/auth/LoginPage.tsx | Login page component with navigation links |
basic/src/auth/EmailVerificationPage.tsx | Email verification page component |
basic/src/Header.tsx | Site header with auth-aware navigation |
basic/src/App.tsx | Root component integrating header and routes |
basic/src/App.css | Tailwind base, utilities, and custom .card class |
basic/schema.prisma | Prisma models for User, Task, Tag with relations |
basic/postcss.config.cjs | PostCSS config enabling Tailwind and autoprefixer |
basic/package.json | Dependencies for React, Wasp, Prisma, Tailwind, etc. |
basic/migrations/migration_lock.toml | Migration lock file for Prisma |
basic/migrations/20250526144559_init/migration.sql | Migration adding userId to Tag table |
basic/migrations/20250522152834_init/migration.sql | Initial schema migration |
basic/main.wasp | Wasp app config: auth, routes, actions, queries |
basic/eslint.config.js | ESLint flat config for JS, TS, React, Prettier |
basic/README.md | Basic starter README with setup instructions |
basic/.wasproot | Marker for Wasp project root |
basic/.waspignore | Files ignored by Wasp |
basic/.prettierrc | Prettier config with Tailwind plugin |
basic/.prettierignore | Prettier ignore patterns |
basic/.gitignore | Git ignore for Wasp and node modules |
README.md | Top-level README updated with basic starter usage |
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
…starters into franjo/new-basic-starter-template
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
I think I caught all non-design comments. Learned a lot from comments. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I've tried playing with the design and I've left a bunch of style changes. For some stuff I had good UX arguments (based on stuff I read and saw) and for other it was just a gut feeling.
Most functional change: removing I misunderstood the change, all good, we discussed this on Discord.migrations
dir from .gitignore
, that's why I'll request changes. We want users to version their migrations
but we don't want to add them by default in the template.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Great job on updating the design! Left some minor comments.
The most actionable would be: clearing the task form after submit and the button icon comment: #28 (comment)
I'll approve the PR, feel free to merge after you address the minor comments in any way you like.
const [mounted, setMounted] = React.useState(false); | ||
React.useLayoutEffect(() => setMounted(true), []); | ||
|
||
const container = containerProp || (mounted && globalThis?.document?.body); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
const container = containerProp || (mounted && globalThis?.document?.body); | |
const container = containerProp ?? (mounted && globalThis?.document?.body); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I would use ||
here, since it provides extra protection.
??
allows fort 0
, false
and ""
to pass here, which doesn't make sense.
I know we type it to be the Element
, but its a good fallback.
Most likely the same reason the original implementation also has the ||
.
}} | ||
> | ||
{tag.name} | ||
{size === "md" && ( |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I know I suggested this way of writing it - but now that I see it in action, I'd much rather have an explicit showColorCircle
or smth like that.
return context.entities.Task.create({ | ||
data: { | ||
description, | ||
isDone: false, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If it's the default value - no need to pass it in. But I understand being explicit as well.
event?.stopPropagation(); | ||
|
||
try { | ||
await createTask(data); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
One thing I usually do on form submit is clear the fields. This gives me some feedback that the submit went through. I'd reset the form using the reset
function from RHF :)
Screen.Recording.2025-06-18.at.14.19.58.movOne extra thing - the task form seems to be submitted when you create a tag. |
These showcases are part of the new basic starter:
User
modelPrisma
Prisma
Prisma
Should we showcase?:
useForm
eslint/prettierpro: setups basic chore work for what we already want e.g. prettier tailwind plugin, it would also make our code cleanercons: the starter is too opinionatedopen-saas
for thatPreview:

