{"id":25491813,"url":"https://github.com/matthewbub/wussup.chat","last_synced_at":"2026-05-11T07:32:55.966Z","repository":{"id":277773785,"uuid":"857244546","full_name":"matthewbub/zcauldron","owner":"matthewbub","description":"Draft: The absolute safest way to convert bank statements to CSV with AI.","archived":false,"fork":false,"pushed_at":"2025-06-30T09:03:11.000Z","size":61384,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-07-14T13:21:15.707Z","etag":null,"topics":["self-hosted"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/matthewbub.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-09-14T06:17:55.000Z","updated_at":"2025-06-30T09:03:15.000Z","dependencies_parsed_at":"2025-02-16T02:25:11.424Z","dependency_job_id":"7497a66c-1a84-4199-b471-c0c92cf2559c","html_url":"https://github.com/matthewbub/zcauldron","commit_stats":null,"previous_names":["matthewbub/wussup.chat","matthewbub/zcauldron.com","matthewbub/pdf2csv.tech","matthewbub/statement2csv","matthewbub/zcauldron"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/matthewbub/zcauldron","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matthewbub%2Fzcauldron","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matthewbub%2Fzcauldron/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matthewbub%2Fzcauldron/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matthewbub%2Fzcauldron/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/matthewbub","download_url":"https://codeload.github.com/matthewbub/zcauldron/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matthewbub%2Fzcauldron/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266796853,"owners_count":23985486,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-24T02:00:09.469Z","response_time":99,"last_error":null,"robots_txt_status":null,"robots_txt_updated_at":null,"robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["self-hosted"],"created_at":"2025-02-18T22:18:59.617Z","updated_at":"2026-05-11T07:32:50.925Z","avatar_url":"https://github.com/matthewbub.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# PDF to CSV\n\n\u003e This repo is under VERY active development. Use at your own discretion\n\nThe absolute safest way to convert bank statements to CSV format.\n\n---\n\n# Table of Contents\n\n- [Getting Started](#getting-started)\n  - [Project Requirements](#project-requirements)\n  - [Set up locally](#set-up-locally)\n  - [Running the Application](#running-the-application)\n- [Running the Application with Docker](#running-the-application-with-docker)\n  - [Staging with Docker](#staging-with-docker)\n  - [Production with Docker](#production-with-docker)\n- [About the core stack](#about-the-core-stack)\n- [Database Management](#database-management)\n  - [Persistence](#persistence)\n  - [Backup](#backup)\n  - [Restore](#restore)\n  - [List All Backups](#list-all-backups)\n  - [Database Initialization](#database-initialization)\n- [Troubleshooting](#troubleshooting)\n\n## Getting Started\n\n### Project Requirements\n\nIf you plan on running the project locally, you're going to need the following installed on your machine. The versions defined are what I am explicitly running right now, if I had to take a guess in the dark I'd say you're good to run with and version greater than or equal to whats defined below.\n\n- [OpenAI API Key](https://openai.com/index/openai-api/)\n- [Docker](https://www.docker.com/) version 25.0.2\n- [Node.js](https://nodejs.org/en/download/) version 18.0\n- [Go](https://go.dev/) version 1.23.1\n- [SQLite](https://www.sqlite.org/download.html) version 3.43.2\n- [Python](https://www.python.org/downloads/) version 3.12\n\n## Set up locally\n\nWatch this 5 minute getting started video here: https://www.youtube.com/watch?v=BhJ3JFsOh2g\n\n1. **Clone the Repository**\n2. **Environment Configuration**\n   - Duplicate `.env.example` to `.env`\n3. **Generate Base64 Key**\n   - Navigate to `cmd/generate_base64_key` and run:\n     ```sh\n     go run main.go\n     ```\n   - Add the generated key to `SESSION_SECRET_KEY` in `.env`\n4. **Add OpenAI API Key**\n   - Update `.env` with your OpenAI API key\n\n### Running the Application\n\n1. **Start the Server**\n   - From the root directory, run:\n     ```sh\n     go run main.go\n     ```\n2. **Client Setup**\n   - In a separate terminal, navigate to `routes/` and install dependencies:\n     ```sh\n     npm install\n     ```\n   - Launch the client dev server:\n     ```sh\n     npm run dev\n     ```\n3. **Image Service Setup**\n   - In another terminal, navigate to `/lib/pdf-service` and install dependencies:\n     ```sh\n     python -m venv venv\n     source venv/bin/activate  # On Windows, use: venv\\Scripts\\activate\n     pip install -r requirements.txt\n     python main.py\n     ```\n   - Tip: If you don't need to change code in this server, you might just run the [Docker image](#build-the-libimage-python-service)\n\n## Running the Application with Docker\n\nThe docker version of the application supports multiple environments:\n\n### Staging with Docker\n\nUseful for running observing what the application will look like in production.\n\n```bash\n# Copy example env file\ncp .env.example .env.staging\n# Edit .env.development with your development settings\ndocker compose up --build\n```\n\n### Production with Docker\n\nSecure encryption and proper configuration is required and enforced in this environment.\n\n```bash\n# Copy example env file\ncp .env.example .env.production\n# Edit .env.production with your production settings\nDOCKER_ENV=production docker compose -f docker-compose.yml -f docker-compose.production.yml up --build\n```\n\n## About the core stack\n\nBackend\n\n- [Go](https://go.dev/) - Server side programming language\n- [Gin](https://gin-gonic.com/) - HTTP framework\n- [SQLite](https://www.sqlite.org/) - Database that's easy to work with\n\nClient\n\n- [React](https://react.dev/) - Web library\n- [TanStack Router](https://tanstack.com/router) - Web routing system\n- [Vite](https://vite.dev/) - JavaScript build tool\n- [TypeScript](https://www.typescriptlang.org/) - Type safe javascript\n- [TailwindCSS](https://tailwindcss.com) - Style framework\n- [Shadcn/ui](https://ui.shadcn.com/) - Accessible components built on top of TailwindCSS\n- [Fabric.js](https://fabricjs.com/) - Used for drawing on canvas (Pdf's)\n\nPDF Service (Micro Service /lib/pdf-service)\n\n- [Python](https://www.python.org/downloads)\n- [PyMuPDF](https://pymupdf.readthedocs.io/en/latest/)\n\n## Database Management\n\n### Persistence\n\nThe database is stored in a Docker named volume that persists between container restarts. Each environment (staging, production) has its own separate volume.\n\n### Backup\n\nTo backup the database:\n\n```bash\n# Make scripts executable\nchmod +x scripts/backup.sh\nchmod +x scripts/restore.sh\n\n# Create a backup (defaults to staging environment)\n./scripts/backup.sh [environment]\n\n# Example:\n./scripts/backup.sh production\n```\n\n### Restore\n\nTo restore from a backup:\n\n```bash\n./scripts/restore.sh [environment] path/to/backup/file.db\n\n# Example:\n./scripts/restore.sh production ./backups/production/backup_20241201_120000.db\n```\n\n### List All Backups\n\n```bash\nls -l backups/[environment]/\n```\n\n### Database Initialization\n\nBefore running backups, ensure your database is properly initialized:\n\n```bash\n# Start the containers first\ndocker compose up -d\n\n# Now you can create your first backup\n./scripts/backup.sh [environment]\n```\n\n## Troubleshooting\n\n```\ndocker compose down\ndocker compose build --no-cache\ndocker compose up -d\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmatthewbub%2Fwussup.chat","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmatthewbub%2Fwussup.chat","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmatthewbub%2Fwussup.chat/lists"}