-
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 <[email protected]>
Co-authored-by: Copilot <[email protected]>
…starters into franjo/new-basic-starter-template
Co-authored-by: Copilot <[email protected]>
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 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.
<div className="flex flex-col gap-2"> | ||
<span>Select tags</span> | ||
<div className="flex flex-wrap gap-4"> | ||
<ul className="flex flex-wrap gap-2"> |
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.
<ul className="flex flex-col gap-2"> | ||
{tasks.map((task) => ( | ||
<TaskListItem task={task} key={task.id} /> | ||
))} | ||
</ul> |
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'd maybe put this above the number of completed tasks because it's more important.
return ( | ||
<div className="flex flex-col gap-6"> | ||
<div className="flex items-center justify-between"> | ||
<div> |
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.
<div> | |
<div className="text-sm text-neutral-500"> |
Making it a bit more muted since it's secondary information.
|
||
return ( | ||
<div className="flex flex-col gap-6"> | ||
<div className="flex items-center justify-between"> |
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.
<div className="flex items-center justify-between"> | |
<div className="flex items-center justify-between h-5"> |
Give it a fixed height to avoid layout jumps:
Screen.Recording.2025-06-09.at.11.36.27.mov
} | ||
|
||
return ( | ||
<li className="group flex w-full flex-wrap items-center justify-between gap-4 rounded-lg px-6 py-3 odd:bg-neutral-50 even:bg-primary-50"> |
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.
This is another wild change, but I'd wrap the whole element in a label
, so when you click on the whole element it acts as the checkbox:
<li className="group flex w-full flex-wrap items-center justify-between gap-4 rounded-lg px-6 py-3 odd:bg-neutral-50 even:bg-primary-50"> | |
<li> | |
<label | |
htmlFor={id} | |
className={twJoin( | |
"card flex w-full flex-wrap items-center justify-between gap-4 bg-neutral-50 px-6 py-3", | |
task.isDone ? "bg-primary-50" : "", | |
)} | |
> |
You also don't need the group
class since you are not styling anything with group:
styles. Also, I'd use the bg-primary-50
to indicate the completed tasks (or the other way around) and not make it alternate colors becuase it doesn't convey any extra meaning. The alternate colors pattern is more common in big tables where it helps you to keep track which row you are reading.
Screen.Recording.2025-06-09.at.14.58.20.mov
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.
Daamn nice improvement.
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:

