Giter Site home page Giter Site logo

alex-streza / appli Goto Github PK

View Code? Open in Web Editor NEW
5.0 1.0 1.0 584 KB

Appli is the first open-source, tech job application platform, employee/interviewee focused.

Home Page: https://appli-dev.vercel.app/

License: MIT License

JavaScript 6.08% TypeScript 91.41% CSS 1.49% Handlebars 0.71% HTML 0.31%
drizzle interview jobs kinde nextjs open-source tailwind tailwindcss typescript

appli's Introduction

dashboard_mockup

Organize your job applications, track your progress, and get hired faster with Appli.

License

Introduction · Installation · Tech Stack + Features · Credits


Introduction

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.

What we are using

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.

Directory Structure

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

Installation

Clone & create this repo locally with the following command:

git clone https://github.com/alex-streza/appli
  1. Install dependencies using pnpm:
pnpm install
  1. Copy .env.example to .env.local and update the variables.
cp .env.example .env.local
  1. Input everything you need for the env.

    1. Create Kinde Account
    2. Create Supabase Account
    3. Create Stripe Account and download Stripe CLI
  2. Start the development server from either yarn or turbo:

# At the root of the mono repo
pnpm run dev:web

Stripe

To set up Stripe locally with environment variables:

  1. Create a Stripe account.
  2. After signing in, go to the dashboard and switch to Test mode.
  3. In the dashboard, switch to the API keys section.
  4. Reveal your secret key and paste it into your .env.local file.
  5. For the webhook key, switch to the Webhooks tab, add an endpoint to reveal the secret key.
  6. To get the PRODUCT_ID and PRICE_ID, head over to Stripe's API Docs.
  7. From the docs, use the API with your STRIPE_API_KEY to create a product & price object.
  8. The response object from the API contains two keys: id and product.
  9. Use the id as your PRICE_ID and product as your PRODUCT_ID.
  10. You can use the same keys for the STD and PRO variables.

Database

This project uses Postgres database on Supabase. To setup a DB for your local dev:

  1. Create a free account and a new Database
  2. From the dashboard, create a new project.
  3. From Home select Drizzle in Connect / ORMs dropdown
  4. Copy the entire list of params to .env.local file. Make sure to change the params under the section "Database (Postgres - Supabase)"
  5. run pnpm run db:push

You can also use docker-compose to have a Postgres database locally, instead of relying on Supabase:

  1. Enter DATABASE_URL value in .env.local.
  2. run docker-compose --env-file .env.local up to start the DB.
  3. run pnpm run db:push.

Roadmap

  • 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

Tech Stack + Features

Frameworks

  • 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

Platforms

  • Vercel – Easily preview & deploy changes with git
  • Supabase – A cutting-edge database platform for seamless, scalable data management
  • Stripe - Payments

UI

  • 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 performance
  • ImageResponse – Generate dynamic Open Graph images at the edge

Contributing

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.
## Repo Activity

Nextify repo activity – generated by Axiom

Credits

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.

appli's People

Contributors

alex-streza avatar turbobot-temp avatar

Stargazers

Saurabh Prakash avatar nnlychai avatar Syed Muzamil avatar Oscar Olotu avatar Vikas Sahu avatar

Watchers

 avatar

Forkers

syedmuzamilm

appli's Issues

feat: Endpoint for fetching applications

Describe the feature you'd like to request

TRPC endpoint that returns a list of authenticated user applications to be shown in the dashboard view, we can return the entire list initially, no need for pagination as of now.

Describe the solution you'd like to see

It should return all the data that's showcased in Figma.

Additional information

No response

Fetch job applications from DB

  • trpc endpoint that returns applications grouped by status
  • show status badges and counts for each DESIGN
  • allow sorting & filtering client side (filter through cached list on frontend instead of backend)

feat: Endpoint to return authenticated user API key

Describe the feature you'd like to request

Create a TRPC endpoint that returns user API key.

Describe the solution you'd like to see

You should also be able to copy the API key to clipboard using the dropdown menu option.

Additional information

No response

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.