AI prompts
base on ProjectX aims to simplify financial management with a user-friendly interface and robust backend <a href="https://badget-eight-gilt.vercel.app/">
<h1 align="center">Badget: Revolutionizing Financial Management</h1>
</a>
<img width="1440" alt="dashboard_mockup" src="https://github.com/projectx-codehagen/Badget/assets/24507211/2c2b8e43-3d18-4b28-b8d0-5dc0cbdb530f">
<p align="center">
Empower your financial management with Badget - AI-driven insights at your fingertips. Optimize your finances effortlessly.
</p>
<p align="center">
<!-- <a href="https://twitter.com/placeholder">
<img src="https://img.shields.io/twitter/follow/badget?style=flat&label=%40badgety&logo=twitter&color=0bf&logoColor=fff" alt="Twitter" />
</a> -->
<a href="https://github.com/projectx-codehagen/Badget/blob/main/LICENSE.md">
<img src="https://img.shields.io/github/license/projectx-codehagen/Badget?label=license&logo=github&color=f80&logoColor=fff" alt="License" />
</a>
</p>
<p align="center">
<a href="#introduction"><strong>Introduction</strong></a> ·
<a href="#installation"><strong>Installation</strong></a> ·
<a href="#tech-stack--features"><strong>Tech Stack + Features</strong></a> ·
<a href="#contributing"><strong>Credits</strong></a>
</p>
<br/>
## Introduction
Welcome to Badget, where we're ushering in a new era of financial management. Leveraging cutting-edge AI, Badget redefines how you track, analyze, and optimize your finances, ensuring smarter, more secure financial decisions.
With Badget, gain unparalleled insights into your spending habits and financial patterns, empowering you to budget better and experience more. Trusted by the world's most innovative companies, Badget is here to revolutionize your financial management experience.
## What we are using
Lets goooo - Next.js 14, Turborepo, Drizzle ORM, Planetscale, Clerk, Resend, React Email, Shadcn/ui, and Stripe.
<br/>
All seamlessly integrated with the Badget to accelerate the development.
## Directory Structure
Badget is a monorepo managed by [Turborepo](https://turbo.build/repo). The monorepo is split between `apps` and `packages` directories.
.
├── apps # Its app workspace which contains
│ ├── www # Nextjs app which is deployed in Vercel
│ └── ...
├── packages # are the shared packages that are used by the apps (e.g. `@badget/api`)
├── plugins # are the connectors that are used to connect to open-finance data (e.g. `@badget/connector-plaid`)
├── tooling # are the shared configuration that are used by the apps and packages (e.g. `@badget/eslint-config`)
├── docker-compose.yml
├── 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:
```bash
git clone https://github.com/projectx-codehagen/Badget
```
1. Install dependencies using pnpm:
```sh
pnpm install
```
2. Copy `.env.example` to `.env.local` and update the variables.
```sh
cp .env.example .env.local
```
4. Input everything you need for the env.
1. Create [Clerk](https://clerk.com) Account
2. Create [Neon](https://neon.tech/) Account
3. Create [Stripe](https://stripe.com) Account and download [Stripe CLI](https://docs.stripe.com/stripe-cli)
5. Start the development server from either yarn or turbo:
```sh
# At the root of the mono repo
pnpm run dev:web
```
## Stripe
To set up Stripe locally with environment variables:
1. Create a [Stripe](https://stripe.com/in) 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](https://docs.stripe.com/api/prices/object).
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 Neon. To setup a DB for your local dev:
Create a free account and a [new Database](https://neon.tech/)
## Roadmap
- [x] ~Initial setup~
- [x] Start removing template
- [x] Update UI to match the product
- [ ] Start stichting frontend with backend
## Tech Stack + Features
### Frameworks
- [Next.js](https://nextjs.org/) – React framework for building performant apps with the best developer experience
- [Clerk](https://clerk.com/) – Handle user authentication with ease with providers like Google, Twitter, GitHub, etc.
- [Drizzle ORM](https://orm.drizzle.team/) – TypeScript ORM that feels like SPA with SSR
- [React Email](https://react.email/) – Versatile email framework for efficient and flexible email development
### Platforms
- [Vercel](https://vercel.com/) – Easily preview & deploy changes with git
- [PlanetScale](https://planetscale.com/) – A cutting-edge database platform for seamless, scalable data management
- [Resend](https://resend.com/) – A powerful email framework for streamlined email development
- [Stripe](https://stripe.com) - Payments
### UI
- [Tailwind CSS](https://tailwindcss.com/) – Utility-first CSS framework for rapid UI development
- [Shadcn/ui](https://ui.shadcn.com/) – Re-usable components built using Radix UI and Tailwind CSS
- [Framer Motion](https://framer.com/motion) – Motion library for React to animate components with ease
- [Lucide](https://lucide.dev/) – Beautifully simple, pixel-perfect icons
- [`next/font`](https://nextjs.org/docs/basic-features/font-optimization) – Optimize custom fonts and remove external network requests for improved performance
- [`ImageResponse`](https://nextjs.org/docs/app/api-reference/functions/image-response) – Generate dynamic Open Graph images at the edge
## Contributing
We love our contributors! Here's how you can contribute:
- [Open an issue](https://github.com/projectx-codehagen/badget/issues) if you believe you've encountered a bug.
- Make a [pull request](https://github.com/projectx-codehagen/badget/pull) to add new features/make quality-of-life improvements/fix bugs.
<a href="https://github.com/projectx-codehagen/badget/graphs/contributors">
<img src="https://contrib.rocks/image?repo=projectx-codehagen/badget" />
</a>
## Repo Activity
![Nextify repo activity – generated by Axiom](https://repobeats.axiom.co/api/embed/f90bd65d98d57ce8fc8bbf36079da64f0c5c8764.svg "Repobeats analytics image")
", Assign "at most 3 tags" to the expected json: {"id":"7714","tags":[]} "only from the tags list I provide: [{"id":77,"name":"3d"},{"id":89,"name":"agent"},{"id":17,"name":"ai"},{"id":54,"name":"algorithm"},{"id":24,"name":"api"},{"id":44,"name":"authentication"},{"id":3,"name":"aws"},{"id":27,"name":"backend"},{"id":60,"name":"benchmark"},{"id":72,"name":"best-practices"},{"id":39,"name":"bitcoin"},{"id":37,"name":"blockchain"},{"id":1,"name":"blog"},{"id":45,"name":"bundler"},{"id":58,"name":"cache"},{"id":21,"name":"chat"},{"id":49,"name":"cicd"},{"id":4,"name":"cli"},{"id":64,"name":"cloud-native"},{"id":48,"name":"cms"},{"id":61,"name":"compiler"},{"id":68,"name":"containerization"},{"id":92,"name":"crm"},{"id":34,"name":"data"},{"id":47,"name":"database"},{"id":8,"name":"declarative-gui "},{"id":9,"name":"deploy-tool"},{"id":53,"name":"desktop-app"},{"id":6,"name":"dev-exp-lib"},{"id":59,"name":"dev-tool"},{"id":13,"name":"ecommerce"},{"id":26,"name":"editor"},{"id":66,"name":"emulator"},{"id":62,"name":"filesystem"},{"id":80,"name":"finance"},{"id":15,"name":"firmware"},{"id":73,"name":"for-fun"},{"id":2,"name":"framework"},{"id":11,"name":"frontend"},{"id":22,"name":"game"},{"id":81,"name":"game-engine "},{"id":23,"name":"graphql"},{"id":84,"name":"gui"},{"id":91,"name":"http"},{"id":5,"name":"http-client"},{"id":51,"name":"iac"},{"id":30,"name":"ide"},{"id":78,"name":"iot"},{"id":40,"name":"json"},{"id":83,"name":"julian"},{"id":38,"name":"k8s"},{"id":31,"name":"language"},{"id":10,"name":"learning-resource"},{"id":33,"name":"lib"},{"id":41,"name":"linter"},{"id":28,"name":"lms"},{"id":16,"name":"logging"},{"id":76,"name":"low-code"},{"id":90,"name":"message-queue"},{"id":42,"name":"mobile-app"},{"id":18,"name":"monitoring"},{"id":36,"name":"networking"},{"id":7,"name":"node-version"},{"id":55,"name":"nosql"},{"id":57,"name":"observability"},{"id":46,"name":"orm"},{"id":52,"name":"os"},{"id":14,"name":"parser"},{"id":74,"name":"react"},{"id":82,"name":"real-time"},{"id":56,"name":"robot"},{"id":65,"name":"runtime"},{"id":32,"name":"sdk"},{"id":71,"name":"search"},{"id":63,"name":"secrets"},{"id":25,"name":"security"},{"id":85,"name":"server"},{"id":86,"name":"serverless"},{"id":70,"name":"storage"},{"id":75,"name":"system-design"},{"id":79,"name":"terminal"},{"id":29,"name":"testing"},{"id":12,"name":"ui"},{"id":50,"name":"ux"},{"id":88,"name":"video"},{"id":20,"name":"web-app"},{"id":35,"name":"web-server"},{"id":43,"name":"webassembly"},{"id":69,"name":"workflow"},{"id":87,"name":"yaml"}]" returns me the "expected json"