Organize your job applications, track your progress, and get hired faster with Appli.
Introduction · Installation · Tech Stack + Features · Credits
We're trying to build the best interviewee/job searcher tool out there, powered by great design and open-source.
Appli allows users to easily save their job applications to prevent them from getting lost in the shuffle. Users can track their progress, set reminders, and get hired faster.
Lets goooo - Next.js 14, Turborepo, Drizzle ORM, Planetscale, Kinde, Resend, React Email, Shadcn/ui, and Stripe.
All seamlessly integrated with the Appli to accelerate the development.
Appli is a monorepo managed by Turborepo. The monorepo is split between apps
and packages
directories.
.
├── apps # Its app workspace which contains
│ ├── next.js # Nextjs app which is deployed in Vercel
│ └── extension
├── packages # are the shared packages that are used by the apps (e.g. `@appli/api`)
├── tooling # are the shared configuration that are used by the apps and packages (e.g. `@appli/eslint-config`)
├── LICENSE
└── README.md
Use short lowercase names at least for the top-level files and folders except
LICENSE
,README.md
Clone & create this repo locally with the following command:
git clone https://github.com/alex-streza/appli
- Install dependencies using pnpm:
pnpm install
- Copy
.env.example
to.env.local
and update the variables.
cp .env.example .env.local
-
Input everything you need for the env.
- Create Kinde Account
- Create Supabase Account
- Create Stripe Account and download Stripe CLI
-
Start the development server from either yarn or turbo:
# At the root of the mono repo
pnpm run dev:web
To set up Stripe locally with environment variables:
- Create a Stripe account.
- After signing in, go to the dashboard and switch to Test mode.
- In the dashboard, switch to the API keys section.
- Reveal your secret key and paste it into your
.env.local
file. - For the webhook key, switch to the Webhooks tab, add an endpoint to reveal the secret key.
- To get the
PRODUCT_ID
andPRICE_ID
, head over to Stripe's API Docs. - From the docs, use the API with your
STRIPE_API_KEY
to create a product & price object. - The response object from the API contains two keys:
id
andproduct
. - Use the
id
as yourPRICE_ID
andproduct
as yourPRODUCT_ID
. - You can use the same keys for the STD and PRO variables.
This project uses Postgres database on Supabase. To setup a DB for your local dev:
- Create a free account and a new Database
- From the dashboard, create a new project.
- From
Home
selectDrizzle
inConnect / ORMs
dropdown - Copy the entire list of params to
.env.local
file. Make sure to change the params under the section "Database (Postgres - Supabase)" - run
pnpm run db:push
You can also use docker-compose
to have a Postgres database locally, instead of relying on Supabase:
- Enter
DATABASE_URL
value in.env.local
. - run
docker-compose --env-file .env.local up
to start the DB. - run
pnpm run db:push
.
-
Initial setup - Implement UI components according to design
- trpc-openapi backend endpoints
- User authentication
- Chrome extension to save applications
- Application performance charts
- AI to predict application success
- AI to improve resume
- Next.js – React framework for building performant apps with the best developer experience
- Kinde – Handle user authentication with ease with providers like Google, Twitter, GitHub, etc.
- Drizzle ORM – TypeScript ORM that feels like SPA with SSR
- Vercel – Easily preview & deploy changes with git
- Supabase – A cutting-edge database platform for seamless, scalable data management
- Stripe - Payments
- Tailwind CSS – Utility-first CSS framework for rapid UI development
- Shadcn/ui – Re-usable components built using Radix UI and Tailwind CSS
- Framer Motion – Motion library for React to animate components with ease
- Phosphor – a flexible icon family for interfaces, diagrams, presentations — whatever, really.
next/font
– Optimize custom fonts and remove external network requests for improved performanceImageResponse
– Generate dynamic Open Graph images at the edge
We ❤️ our contributors! Here's how you can contribute:
- Open an issue if you believe you've encountered a bug.
- Make a pull request to add new features/make quality-of-life improvements/fix bugs.
Big thanks to @codehagen for starting the open-source/X movement in building awesome software, if you ever need a financial/budgeting platform, check out Badget.