{"id":18743249,"url":"https://github.com/anthonybudd/anthonybudd","last_synced_at":"2026-02-23T00:04:11.828Z","repository":{"id":130731526,"uuid":"371155475","full_name":"anthonybudd/anthonybudd","owner":"anthonybudd","description":null,"archived":false,"fork":false,"pushed_at":"2024-05-23T03:39:25.000Z","size":37170,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-05-23T04:54:19.551Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"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/anthonybudd.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}},"created_at":"2021-05-26T20:02:30.000Z","updated_at":"2024-05-30T00:13:58.976Z","dependencies_parsed_at":"2024-05-30T00:24:26.390Z","dependency_job_id":null,"html_url":"https://github.com/anthonybudd/anthonybudd","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anthonybudd%2Fanthonybudd","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anthonybudd%2Fanthonybudd/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anthonybudd%2Fanthonybudd/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anthonybudd%2Fanthonybudd/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/anthonybudd","download_url":"https://codeload.github.com/anthonybudd/anthonybudd/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239627125,"owners_count":19670843,"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","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":[],"created_at":"2024-11-07T16:10:45.750Z","updated_at":"2026-02-23T00:04:11.820Z","avatar_url":"https://github.com/anthonybudd.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg width=\"auto\" src=\"https://raw.githubusercontent.com/anthonybudd/anthonybudd/master/img/header.svg?v=5\" alt=\"Header\"\u003e\n\u003c/p\u003e\n\n\u003ch3 align=\"center\"\u003e\n\n| [UpWork](https://www.upwork.com/freelancers/anthonybudd)  | [LinkedIn](https://www.linkedin.com/in/anthonybudd)  | [YouTube](https://www.youtube.com/@anthonycbudd) | [Calendly](https://calendly.com/anthonybudd/30min) |\n\n\u003c/h3\u003e\n\nREST API \u0026 SaaS Specialist. Over 13 years of experience building web technology with TypeScript, JavaScript and PHP.\n\n- 🏢 Worked at Apple, RedHat and LegalZoom\n- 🥇 UpWork Top-Rated \u0026 Expert-Vetted Developer\n- ✅ Laravel Framework Contributor\n\n\n\n# Work\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://www.upwork.com/freelancers/anthonybudd\"\u003e\n  \u003cimg width=\"auto\" src=\"https://raw.githubusercontent.com/anthonybudd/anthonybudd/master/img/banner.png?v=20-12-21\" alt=\"HireMe\"\u003e\n  \u003c/a\u003e\n  \u003c/br\u003e\n  \u003c!-- \u003ca href=\"https://www.upwork.com/freelancers/anthonybudd\"\u003e\n  UpWork.com/freelancers/AnthonyBudd\n  \u003c/a\u003e --\u003e\n\u003c/p\u003e\n\n| \u003ca href=\"https://www.upwork.com/services/product/development-it-on-prem-cryptocurrency-exchange-infrastructure-1729571406733246464\"\u003e\u003cimg width=\"500\" src=\"https://raw.githubusercontent.com/anthonybudd/anthonybudd/master/img/product-infra.png?v=1\"\u003e I Can Build Your On-Prem Infrastructure.\u003cbr/\u003eFrom $50,000\u003c/a\u003e | \u003ca href=\"https://www.upwork.com/services/product/development-it-bespoke-node-js-enterprise-grade-saas-mvp-1718712762925244416\"\u003e\u003cimg width=\"500\" src=\"https://raw.githubusercontent.com/anthonybudd/anthonybudd/master/img/product-mvp.png?v=1\"\u003e I Can Build Your App in 28 days.\u003cbr/\u003eFrom $15,000\u003c/a\u003e|\n| -- | -- |\n\n\u003c!-- \u003cp align=\"center\"\u003e\n  \u003ca href=\"https://www.upwork.com/freelancers/anthonybudd\"\u003e\n  UpWork.com/freelancers/AnthonyBudd\n  \u003c/a\u003e\n\u003c/p\u003e --\u003e\n\n\n# Projects\n\n### [Express.ts API Template](https://github.com/anthonybudd/express-ts-api-template)\n\n\u003ca href=\"https://github.com/anthonybudd/express-ts-api-template\"\u003e\u003cimg width=\"300\" src=\"https://raw.githubusercontent.com/anthonybudd/anthonybudd/master/img/express-ts-api-template.png\"\u003e\u003c/a\u003e\n\n![Language](https://img.shields.io/badge/Language-Node.ts-success?style=flat)\n\nProduction-ready minimal REST API template using Express.js, Sequelize and MySQL. \n\n- 👥 MySQL Users M:M Groups\n- 🔐 Auth using JWT, optional 2FA\n- 📄 MVC Code Generation\n- 🌐 Production-ready [Kubernetes config files](https://github.com/anthonybudd/express-ts-api-template/blob/master/k8s/Deploy.md) and [OpenApiSpec.yml](https://github.com/anthonybudd/express-ts-api-template/blob/master/OpenApiSpec.yml)\n- 🔌 Automated Client Library/SDK Generation with [openapi-generator-cli](https://github.com/OpenAPITools/openapi-generator-cli)\n- 🥇 Real world tested, generated over $50M in revenue\n\n| Method        | Route                                                    | Description                           | Payload                               | Response          | \n| ------------- | -------------------------------------------------------- | ------------------------------------- | ------------------------------------- | ----------------- |  \n| `POST`        | `/api/v1/auth/login`                                     | Login                                 | `{email, password}`                     | `{accessToken}`     |  \n| `POST`        | `/api/v1/auth/sign-up`                                   | Sign-up                               | `{email, password, firstName, tos}`     | `{accessToken}`     |  \n| `GET`         | `/api/v1/user`                                           | Get the current user                  |                                         | `{User}`            |  \n| `POST`        | `/api/v1/user`                                           | Update the current user               | `{firstName, lastName}`                 | `{User}`            |  \n|               | [All Routes](https://github.com/anthonybudd/express-ts-api-template?tab=readme-ov-file#routes) |  |  |  |  \n\n\n---\n\n### [ShadCN Vue3 SaaS Template](https://github.com/anthonybudd/Shadcn-Vue-SaaS-Template)\n\n\u003ca href=\"https://github.com/anthonybudd/Shadcn-Vue-SaaS-Template\"\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/anthonybudd/Shadcn-Vue-SaaS-Template/refs/heads/master/public/static/screenshots.png\"\u003e\n\u003c/a\u003e\n\nA minimal SaaS template built using ShadCN and Vuetify 3. Built to work out of the box with [AnthonyBudd/Express-TS-Api-Template](https://github.com/anthonybudd/express-ts-api-template) as the backend.\n\n- 🔐 Login, Sign-up, ForgotPassword\n- 📈 Dashboard\n- 👥 Manage Account \u0026 Groups\n\n```sh\ngit clone git@github.com:anthonybudd/Shadcn-Vue-SaaS-Template.git\ncd Shadcn-Vue-SaaS-Template\ncp .env.example .env\nnpm i\nnpm run dev\n```\n\n---\n\n\u003ca href=\"https://github.com/anthonybudd/s3-from-scratch\"\u003e\n  \u003cimg width=\"300\" src=\"https://raw.githubusercontent.com/anthonybudd/anthonybudd/master/img/s3.png\"\u003e\n\u003c/a\u003e\n\n### [An Attempt At Building Enterprise-grade S3 Infrastructure From Bare Metal](https://github.com/anthonybudd/s3-from-scratch)\n\nOver the past few years I’ve been thinking about how I could build SaaS and deploy it on my own infrastructure without needing to use any cloud platforms like AWS or GCP. In this repo I document my progress on building a clone of AWS S3 that functions the same as S3 (automated bucket deployment, dynamically expanding volumes, security, etc) using an exclusively open-source technology stack.\n\n---\n\n\u003ca href=\"https://youtu.be/3rvBe_5Y78o\"\u003e\n  \u003cimg width=\"300\" src=\"https://raw.githubusercontent.com/anthonybudd/anthonybudd/master/img/6hr-startup-yt.png\"\u003e\n\u003c/a\u003e\n\n### [YouTube: Building a Start-up in 6 Hours](https://youtu.be/3rvBe_5Y78o)\n\n- Frontend: [AnthonyBudd/P.R.Box-UI](https://github.com/anthonybudd/P.R.Box-UI)\n- Backend: [AnthonyBudd/P.R.Box-API](https://github.com/anthonybudd/P.R.Box-API)\n\nIn this video, I build a fully functional, live start-up in just 6 hours, using my Vue.js and Express.ts templates. From cloneing to deployment, I showcase the full-stack development process of a polished prduct. This isn’t a tutorial, it’s a real-time demonstration of how I build production-ready start-ups for clients.\n\n---\n\n\u003ca href=\"https://github.com/anthonybudd/vipfs\"\u003e\u003cimg width=\"300\" src=\"https://raw.githubusercontent.com/anthonybudd/anthonybudd/master/img/vipfs.png\"\u003e\u003c/a\u003e\n\n### [VIPFS](https://github.com/anthonybudd/vipfs)\n![Language](https://img.shields.io/badge/Language-Node.js-success?style=flat)\n![Stars](https://img.shields.io/github/stars/anthonybudd/VIPFS?style=social)\n\n\nVIPFS is a simple template project for creating permanent decentralised apps, blogs and websites that cannot be taken offline by anyone, including the government. VIPFS comes with useful templates and is pre-integrated with Bootstrap, FontAwesome and Video.js. Simply clone, compile and run  `npm run publish`  to deploy it on [IPFS](https://github.com/ipfs) and make your project permanently accesable to the world.\n\n- [YouTube Tutorial](https://www.youtube.com/watch?v=Fq7h-cSN9i8)\n- Featured on [MadeWithVueJS.com](https://madewithvuejs.com/vipfs)\n- Featured on [BestOfVue.com](https://bestofvue.com/repo/Ideea-inc-vipfs)\n\n---\n\n\u003ca href=\"https://github.com/anthonybudd/Open-Source-Crypto-ATM\"\u003e\u003cimg width=\"300\" src=\"https://raw.githubusercontent.com/anthonybudd/anthonybudd/master/img/osca.jpg\"\u003e\u003c/a\u003e\n\n\n### [OSCA. Open-Source Crypto ATM](https://github.com/anthonybudd/Open-Source-Crypto-ATM)\n![Stars](https://img.shields.io/github/stars/anthonybudd/Open-Source-Crypto-ATM?style=social)\n\n\nA crypto-currency ATM that someone with minimal electro-mechanical skill can build at home with parts from Amazon and hardware from Lowes. The user inserts cash and the machine returns a cold wallet loaded with the desired amount of crypto-currency. OSCA does not require you to disclose any personal information to use this ATM.\n\n---\n\n\n\u003ca href=\"https://github.com/anthonybudd/camera-spike\"\u003e\u003cimg src=\"https://raw.githubusercontent.com/anthonybudd/anthonybudd/main/img/camera-spike.png?v=1\"\u003e\u003c/a\u003e\n\n\n### [Camera Spike](https://github.com/anthonybudd/Camera-Spike)\n![Language](https://img.shields.io/badge/Language-Node.js-success?style=flat)\n![Stars](https://img.shields.io/github/stars/anthonybudd/Camera-Spike?style=social)\n\n\nCamera Spike is a basic self-hosted security camera project for the Raspberry Pi. A web UI is provided using Tor, this allows you to remotely monitor the feed without needing to register the device with a 3rd-party or without disclosing your IP address or the IP address of the Camera Spike. CLI tools are provided so you can easily create a custom onion v3 address.\n\n\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\n\n---\n\n\u003ca href=\"https://github.com/anthonybudd/s4\"\u003e\u003cimg width=\"300\" src=\"https://raw.githubusercontent.com/anthonybudd/anthonybudd/master/img/s4.png\"\u003e\u003c/a\u003e\n\n\n### [S4](https://github.com/anthonybudd/s4)\n![Stars](https://img.shields.io/github/stars/anthonybudd/s4?style=social)\n\n\nS4 is 100% compatible AWS S3 storage, accessed through Tor and distributed using IPFS. Tor acts as a DNS and [IPFS](https://github.com/ipfs/ipfs) acts as a CDN and will make your data permanently accessible and is almost impossible to take offline. A [sidecar docker container](https://github.com/anthonybudd/s4-client) is provided to seamlessly proxy requests from your existing S3 code over Tor to S4. Basically it's self-hosted S3 that also makes the data accessible on IPFS.\n\n\n- [YouTube Tutorial](https://youtu.be/RMNjpAmCvcQ)\n- [Talking about S4 on the IPFS weekly meet-up](https://www.youtube.com/watch?v=8F62oXVrYJU)\n\n---\n\n\u003ca href=\"https://github.com/anthonybudd/nginx-tor-proxy\"\u003e\u003cimg height=\"75\" src=\"https://github.com/anthonybudd/nginx-tor-proxy/raw/master/docs/img/header.png\"\u003e\u003c/a\u003e\n\n### [NGINX TOR Proxy](https://github.com/anthonybudd/nginx-tor-proxy)\n\n\nNGINX Tor Proxy is a simple container that exposes your containers with a custom Tor v3 Onion address.\n\nTor vanity URLs generated using [cathugger/mkp224o](https://github.com/cathugger/mkp224o)\n\n\u003c!-- ---\n\n### [CLI Password Manager](https://github.com/anthonybudd/CLI-Password-Manager)\n\nCLI Password Manager gives you 4 simple commands for easily encrypting and decrypting a local password vault using OpenSSL.\n\n```js\nclipm-dec\nclipm-nano\nclipm-enc\n``` --\u003e\n\n---\n\n\u003c!-- ### [If](https://github.com/anthonybudd/If)\n\nA chainabale if library for JavaScript.\n\nThis is totally pointless, I just wanted to see if I could build this because I think this kind of chainable syntax looks better over control-structure syntax in the `.then()` method of a promise.\n\n```js\nconst myArr = ['a', 'b', 'c'];\nconst result = new If(myArr.length \u003c 2)\n    .then(() =\u003e ('Array less than 2'))\n    .elseif((myArr.length \u003e 3), () =\u003e ('Array greater than 3'))\n    .else(() =\u003e ('Array has length 3'))\n    .fi();\n\nconsole.log(result); // 'Array has length 3'\n```\n\n\n\n--- --\u003e\n\n\n### Archived Projects\n\n#### [WP_Model](https://github.com/anthonybudd/wp_model)\n![Language](https://img.shields.io/badge/Language-PHP-success?style=flat) ![Stars](https://img.shields.io/github/stars/anthonybudd/wp_model?style=social)\n\n\nWP_Model is an advanced pseudo ORM for WordPress, it provides active-record models of WordPress posts in the style of Laravel's ORM eloquent.\n\n```PHP\nClass Product extends WP_Model\n{\n    public $postType = 'product';\n    public $attributes = [\n        'color',\n        'price'\n    ];\n}\n\nProduct::register();\n\n$book = new Product;\n$book-\u003etitle = 'WordPress for dummies';\n$book-\u003ecolor = 'Yellow';\n$book-\u003eprice = 20;\n$book-\u003esave();\n```\n\n\n#### [WP_Route](https://github.com/anthonybudd/wp_route)\n![Language](https://img.shields.io/badge/Language-PHP-success?style=flat) ![Stars](https://img.shields.io/github/stars/anthonybudd/wp_route?style=social)\n\n\nWP_Route is a simple way to create custom routes in WordPress for listening for webhooks, oAuth callbacks and basic routing. WP_Route is a single class solution that supports route parameters and redirects and does not require any set-up.\n```PHP\nWP_Route::get('flights',                        'listFlights');\nWP_Route::post('flights/{flight}',              'singleFlight');\nWP_Route::put('flights/{flight}/book/{date}',   'bookFlight');\nWP_Route::delete('flights/{flight}/delete',     'deleteFlight');\n\nWP_Route::any('flights/{flight}',               array('Class', 'staticMethod'));\nWP_Route::patch('flights/{flight}',             array($object, 'method'));\nWP_Route::match(['get', 'post'],                'flights/{flight}/confirm', 'confirmFlight');\nWP_Route::redirect('/from/here',                '/to/here', 301);\n```\n\n\n\n#### [WP_Mail](https://github.com/anthonybudd/wp_mail)\n![Language](https://img.shields.io/badge/Language-PHP-success?style=flat) ![Stars](https://img.shields.io/github/stars/anthonybudd/wp_mail?style=social)\n\n\nWP_Mail is the simplest and most powerful dynamic email class available for WordPress. The class provides simple methods for attaching files, custom headers and lots of helper functions. The class only sends emails using the WordPress function wp_mail(), this means that all of your existing SMTP settings will continue to work with no additional config or set-up required.\n```PHP\n$email = WP_Mail::init()\n    -\u003eto('john.doe@gmail.com')\n    -\u003esubject('WP_Mail is great!')\n    -\u003etemplate(get_template_directory() .'/emails/example.php', [\n        'name'     =\u003e 'Anthony Budd',\n        'location' =\u003e 'London',\n        'skills'   =\u003e [\n           'PHP',\n           'AWS',\n        ] \n    ])\n    -\u003esend();\n```\n\n\n\n\u003ca href=\"https://u8views.com/github/anthonybudd\"\u003e\u003cimg src=\"https://u8views.com/api/v1/github/profiles/7443012/views/total-count.svg\"\u003e\u003c/a\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fanthonybudd%2Fanthonybudd","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fanthonybudd%2Fanthonybudd","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fanthonybudd%2Fanthonybudd/lists"}