A simple, web-based app to track items you want to buy later. It lets you easily add, update, and manage your items, with the ability to toggle between "Paid" and "Unpaid" statuses.
- Add, update, and delete items in your list.
- Toggle item statuses between "Paid" and "Unpaid."
- User-friendly interface with responsive design.
- Framework: Next.js
- Styling: ShadCN UI
- Database: PocketBase
- Package Manager: pnpm
- Containerization: Docker
Before running the app, set the following environment variables in a .env.local
file:
NEXT_PUBLIC_POCKETBASE_URL
: The URL of your PocketBase server.EMAIL
: The email address used to log in to the PocketBase instance.PASSWORD
: The password used to log in to the PocketBase instance.COLLECTION
: The name of the PocketBase collection to store your items.
Example:
NEXT_PUBLIC_POCKETBASE_URL=https://pocketbase
EMAIL=[email protected]
PASSWORD=yourpassword
COLLECTION=pbcollection
To run Budgetable on your local machine, follow these steps:
git clone https://github.com/skidoodle/budgetable
cd budgetable
pnpm install
pnpm dev
Access the app at http://localhost:3000
.
- Pull the Docker image from GitHub Container Registry:
docker pull ghcr.io/skidoodle/budgetable:main
- Run the Docker container with a persistent volume:
docker run -d \ -p 3000:3000 \ --name budgetable \ -v data:/app \ -e NEXT_PUBLIC_POCKETBASE_URL=https://pocketbase \ -e [email protected] \ -e PASSWORD=yourpassword \ -e COLLECTION=pbcollection \ ghcr.io/skidoodle/budgetable:main
- Access the app at
http://localhost:3000
.
- Create a
docker-compose.yml
file in the project root:services: budgetable: image: ghcr.io/skidoodle/budgetable:main ports: - "3000:3000" volumes: - data:/app environment: NEXT_PUBLIC_POCKETBASE_URL: https://pocketbase EMAIL: [email protected] PASSWORD: yourpassword COLLECTION: pbcollection volumes: data:
- Start the services:
docker-compose up -d
- Access the app at
http://localhost:3000
.
Contributions are welcome! Feel free to open issues or submit pull requests.
If you encounter any issues or have questions, please create an issue in the repository.