{"id":24979886,"url":"https://github.com/rcrdk/in-bio-micro-saas","last_synced_at":"2026-04-14T19:32:32.272Z","repository":{"id":275341089,"uuid":"918800167","full_name":"rcrdk/in-bio-micro-saas","owner":"rcrdk","description":"ProjectInBio serves as a micro SaaS boilerplate, in this case users can create their own shareble page to use on social media such as Linkedin, GitHub, Instagram and others.","archived":false,"fork":false,"pushed_at":"2025-03-24T11:36:20.000Z","size":4389,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-24T12:37:40.014Z","etag":null,"topics":["authjs","boilerplate","firebase","landing-page","landingpage","micro-saas","micro-sass","next-auth","nextjs","react","resend-email","saas","saas-boilerplate","stripe","subscription","tailwindcss","typescript"],"latest_commit_sha":null,"homepage":"https://inbio.rcrdk.dev","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/rcrdk.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":"2025-01-18T22:08:50.000Z","updated_at":"2025-03-24T11:36:23.000Z","dependencies_parsed_at":"2025-03-24T12:40:36.026Z","dependency_job_id":null,"html_url":"https://github.com/rcrdk/in-bio-micro-saas","commit_stats":null,"previous_names":["rcrdk/in-bio-micro-saas"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/rcrdk/in-bio-micro-saas","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rcrdk%2Fin-bio-micro-saas","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rcrdk%2Fin-bio-micro-saas/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rcrdk%2Fin-bio-micro-saas/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rcrdk%2Fin-bio-micro-saas/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rcrdk","download_url":"https://codeload.github.com/rcrdk/in-bio-micro-saas/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rcrdk%2Fin-bio-micro-saas/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31812968,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-14T18:05:02.291Z","status":"ssl_error","status_checked_at":"2026-04-14T18:05:01.765Z","response_time":153,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["authjs","boilerplate","firebase","landing-page","landingpage","micro-saas","micro-sass","next-auth","nextjs","react","resend-email","saas","saas-boilerplate","stripe","subscription","tailwindcss","typescript"],"created_at":"2025-02-04T04:15:24.722Z","updated_at":"2026-04-14T19:32:32.255Z","avatar_url":"https://github.com/rcrdk.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🪪 ProjectInBio Micro SaaS\nProjectInBio serves as a micro SaaS boilerplate, in this case users can create their own shareble page to use on social media such as Linkedin, GitHub, Instagram and others. This app was developed during my studies about micro SaaS app at [Rocketseat](https://www.rocketseat.com.br/).\n\n\u003cimg alt=\"ProjectInBio Micro SaaS App Preview\" src=\"https://github.com/rcrdk/in-bio-micro-saas/blob/main/public/app-preview.png?raw=true\" /\u003e\n\n## 📋 Features\n\n**Public Pages:**\n- **Home:** The main landing page showcasing the product, including a hero section, video presentation, pricing details, and FAQs.\n- **Create Your Page:** A secondary landing page similar to the home page but featuring an input field for users to enter a custom slug. Submitting the form directs them to social login to proceed.\n- **Resources:** A landing page optimized for programmatic SEO, targeting specific social networks to promote the service.\n- **Pages:** Public profile pages created by users, displaying their avatar, name, introduction, social media links, and custom links. Users can also showcase their projects.\n\n**Private Pages:**\n- **Create Now:** After social login, users complete their profile setup by entering a unique slug.\n- **Profile:** A private version of the public profile with additional features, including edit buttons for all data, page visit analytics, and project click insights. If the user is in the trial period, a top bar prompts them to upgrade.\n- **Upgrade:** If the trial period expires and the user has no active payment or subscription, this page is displayed to select a plan via Stripe.\n\n---\n\n**Development:**\n- **Next.js 15 \u0026 React 19:** uses the App Router with Server Components for improved performance. Implements `unstable_cache` to optimize API usage.\n- **Mixpanel Analytics:** tracks user interactions on the server side and provides custom reports on app activity.\n- **Google Tag Manager \u0026 Google Analytics:** enables custom tracking tags and client-side interaction tracking for detailed analytics.\n- **Stripe:** handles subscriptions and one-time payments, leveraging webhooks to monitor payment events.\n- **Firebase:** utilizes Firestore for data persistence and Storage for file management.\n\n## ⚙️ Tech Stack and tools\n\u003cimg alt=\"Turborepo\" src=\"https://img.shields.io/badge/-Turborepo-05122A?style=flat\u0026logo=turborepo\" /\u003e\u0026nbsp;\n\u003cimg alt=\"PNPM\" src=\"https://img.shields.io/badge/-PNPM-05122A?style=flat\u0026logo=pnpm\" /\u003e\u0026nbsp;\n\u003cimg alt=\"React\" src=\"https://img.shields.io/badge/-React-05122A?style=flat\u0026logo=react\" /\u003e\u0026nbsp;\n\u003cimg alt=\"Next.js\" src=\"https://img.shields.io/badge/-Next.js%2015%20with%20App%20Router-05122A?style=flat\u0026logo=next.js\" /\u003e\u0026nbsp;\n\u003cimg alt=\"Typescript\" src=\"https://img.shields.io/badge/-Typescript-05122A?style=flat\u0026logo=typescript\" /\u003e\u0026nbsp;\n\u003cimg alt=\"Auth.js\" src=\"https://img.shields.io/badge/-Auth.js-05122A?style=flat\u0026logo=data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjAgMjAiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTMuNzE4NzUgMy45Mjk3MkM1LjYyNzg5IDMuMzY3MzMgOC40NTU2OCAyLjUyNDExIDkuNjQ4MjggMi4xNjgxMkMxMC4wMTczIDIuMDU3OTcgMTAuNDA3NSAyLjA1NzExIDEwLjc3NzEgMi4xNjUzM0MxMS45MjYgMi41MDE3MyAxNC41OTg0IDMuMjg3ODMgMTYuNjY0OCAzLjkyMzQ5QzE3LjA4MjggNC4wNTIwOSAxNy4zNjc5IDQuNDQ1OTMgMTcuMzU3NSA0Ljg4MzE5QzE3LjExODggMTQuOTg2NyAxMi4wMTk2IDE3LjQxMDUgMTAuNTg0MiAxNy44OTM2QzEwLjMzODggMTcuOTc2MiAxMC4wODM3IDE3Ljk3NjQgOS44MzgwMiAxNy44OTQ1QzguMzk1NjcgMTcuNDEzNyAzLjI1NDIxIDE0Ljk5NTEgMy4wMDkwNyA0Ljg5NzE0QzIuOTk4MyA0LjQ1MzE3IDMuMjkyNzYgNC4wNTUyMSAzLjcxODc1IDMuOTI5NzJaIiBmaWxsPSIjRDlEOUQ5Ii8+PG1hc2sgaWQ9Im1hc2swXzE1Nl8yNTIiIHN0eWxlPSJtYXNrLXR5cGU6YWxwaGEiIG1hc2tVbml0cz0idXNlclNwYWNlT25Vc2UiIHg9IjMiIHk9IjIiIHdpZHRoPSIxNSIgaGVpZ2h0PSIxNiI+PHBhdGggZD0iTTMuNzE4NzUgMy45Mjk3MkM1LjYyNzg5IDMuMzY3MzMgOC40NTU2OCAyLjUyNDExIDkuNjQ4MjggMi4xNjgxMkMxMC4wMTczIDIuMDU3OTcgMTAuNDA3NSAyLjA1NzExIDEwLjc3NzEgMi4xNjUzM0MxMS45MjYgMi41MDE3MyAxNC41OTg0IDMuMjg3ODMgMTYuNjY0OCAzLjkyMzQ5QzE3LjA4MjggNC4wNTIwOSAxNy4zNjc5IDQuNDQ1OTMgMTcuMzU3NSA0Ljg4MzE5QzE3LjExODggMTQuOTg2NyAxMi4wMTk2IDE3LjQxMDUgMTAuNTg0MiAxNy44OTM2QzEwLjMzODggMTcuOTc2MiAxMC4wODM3IDE3Ljk3NjQgOS44MzgwMiAxNy44OTQ1QzguMzk1NjcgMTcuNDEzNyAzLjI1NDIxIDE0Ljk5NTEgMy4wMDkwNyA0Ljg5NzE0QzIuOTk4MyA0LjQ1MzE3IDMuMjkyNzYgNC4wNTUyMSAzLjcxODc1IDMuOTI5NzJaIiBmaWxsPSIjRDlEOUQ5Ii8+PC9tYXNrPjxnIG1hc2s9InVybCgjbWFzazBfMTU2XzI1MikiPjxwYXRoIGQ9Ik0xMC4yMTEyIDkuNzc0NjVMMTAuMDk4NiAxLjcxODMxTDE3LjgxNjkgMy44MDI4MkwxMC4yMTEyIDkuNzc0NjVaIiBmaWxsPSJ1cmwoI3BhaW50MF9saW5lYXJfMTU2XzI1MikiLz48cGF0aCBkPSJNMTAuMjExMyA5Ljc3NDY1VjJMMi44MzA5OCAzLjk3MTgzTDEuODE2ODkgOC43NjA1Nkw1LjAyODE2IDEzLjc3NDZMMTAuMjExMyA5Ljc3NDY1WiIgZmlsbD0idXJsKCNwYWludDFfbGluZWFyXzE1Nl8yNTIpIi8+PHBhdGggZD0iTTE3LjU5MTUgMy45NzE4M0w0LjkxNTQ3IDEzLjc3NDZWMTguMjI1NEgxNy40MjI1TDE3LjU5MTUgMy45NzE4M1oiIGZpbGw9InVybCgjcGFpbnQyX2xpbmVhcl8xNTZfMjUyKSIvPjwvZz48ZGVmcz48bGluZWFyR3JhZGllbnQgaWQ9InBhaW50MF9saW5lYXJfMTU2XzI1MiIgeDE9IjEwLjIxMTIiIHkxPSIyIiB4Mj0iMTUuNjE5NyIgeTI9IjUuNTQ5MyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPjxzdG9wIHN0b3AtY29sb3I9IiMxOUFBRTgiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiMxRUE1RjEiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD0icGFpbnQxX2xpbmVhcl8xNTZfMjUyIiB4MT0iMy4wNTYzMyIgeTE9IjQuMTQwODUiIHgyPSIxMC4yMTEzIiB5Mj0iOS42NjE5NyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPjxzdG9wIHN0b3AtY29sb3I9IiMyQkUyQjgiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiMxOUI5RTMiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD0icGFpbnQyX2xpbmVhcl8xNTZfMjUyIiB4MT0iMTcuMzA5OCIgeTE9IjQuMDI4MTciIHgyPSI3Ljk1NzcyIiB5Mj0iMTYuOTg1OSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPjxzdG9wIHN0b3AtY29sb3I9IiM5MjVDREYiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiNDQzQyRTUiLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48L3N2Zz4=\" /\u003e\u0026nbsp;\n\u003cimg alt=\"Google OAuth\" src=\"https://img.shields.io/badge/-Google%20OAuth-05122A?style=flat\u0026logo=google\" /\u003e\u0026nbsp;\n\u003cimg alt=\"T3 Env\" src=\"https://img.shields.io/badge/-T3%20Env-05122A?style=flat\u0026logo=data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjM0MS4zMzMiIGhlaWdodD0iMzQxLjMzMyIgdmlld0JveD0iMCAwIDI1NiAyNTYiPiAgICA8ZyBmaWxsPSIjZmZmIj4gICAgICAgIDxwYXRoIGQ9Ik0wIDQydjEyaDE2NS42bDExLjMtMTIgMTEuMi0xMkgwdjEyek0xOTcuNSA1NS4yYy0xMi4xIDEyLjMtMjkuMSAyOS41LTM3LjggMzguNGwtMTUuOSAxNi4xIDkuMiA3LjggOS4zIDcuOSAxMC4xLTEwLjVjNS41LTUuNyAyNS43LTI2LjUgNDQuOS00Ni4yTDI1Mi4yIDMzaC0zMi43bC0yMiAyMi4yek02My4yIDE0Ny4ybC4zIDczLjMgMTEuOC4zIDExLjcuM1Y3NEg2M2wuMiA3My4yek0yMDkuNyAxMDguN2wtOC43IDguOCA2LjYgMy40YzEyLjkgNi43IDIxLjIgMTggMjMuNiAzMiAzLjEgMTgtNyAzNy0yNC4yIDQ1LjQtNi4xIDMtNy4xIDMuMi0xNy41IDMuMi0xMy43LS4xLTE5LjgtMi4yLTI4LjItOS44LTcuMi02LjYtMTAuNS0xMS45LTEzLjktMjJsLTIuNi03LjktOS40IDkuM2MtNS4yIDUuMi05LjQgOS45LTkuNCAxMC41IDAgMy40IDcuOCAxNi4xIDE0LjEgMjIuOCAxMi45IDEzLjggMjcuMiAyMC41IDQ1LjUgMjEuNCAyNy40IDEuMyA1MS43LTEzIDYzLjQtMzcuMyAxMi4xLTI1IDcuNy01My44LTExLjItNzQtNS4yLTUuNi0xNi43LTE0LjUtMTguNy0xNC41LS4zIDAtNC42IDMuOS05LjQgOC43eiIvPiAgICA8L2c+PC9zdmc+\" /\u003e\u0026nbsp;\n\u003cimg alt=\"Zod\" src=\"https://img.shields.io/badge/-Zod-05122A?style=flat\u0026logo=zod\" /\u003e\u0026nbsp;\n\u003cimg alt=\"Firebase Firestore Database\" src=\"https://img.shields.io/badge/-Firebase-05122A?style=flat\u0026logo=firebase\" /\u003e\u0026nbsp;\n\u003cimg alt=\"Firebase Storage\" src=\"https://img.shields.io/badge/-Firebase%20Storage-05122A?style=flat\u0026logo=firebase\" /\u003e\u0026nbsp;\n\u003cimg alt=\"TailwindCSS\" src=\"https://img.shields.io/badge/TailwindCSS-05122A?style=flat\u0026logo=tailwind-css\" /\u003e\u0026nbsp;\n\u003cimg alt=\"ESLint\" src=\"https://img.shields.io/badge/-ESLint-05122A?style=flat\u0026logo=eslint\" /\u003e\u0026nbsp;\n\u003cimg alt=\"Prettier\" src=\"https://img.shields.io/badge/-Prettier-05122A?style=flat\u0026logo=prettier\" /\u003e\u0026nbsp;\n\u003cimg alt=\"Vercel\" src=\"https://img.shields.io/badge/-Vercel-05122A?style=flat\u0026logo=vercel\" /\u003e\u0026nbsp;\n\u003cimg alt=\"Stripe\" src=\"https://img.shields.io/badge/-Stripe-05122A?style=flat\u0026logo=stripe\" /\u003e\u0026nbsp;\n\u003cimg alt=\"Resend\" src=\"https://img.shields.io/badge/-Resend-05122A?style=flat\u0026logo=resend\" /\u003e\u0026nbsp;\n\u003cimg alt=\"Google Analytics\" src=\"https://img.shields.io/badge/-Google%20Analytics-05122A?style=flat\u0026logo=googleanalytics\" /\u003e\u0026nbsp;\n\u003cimg alt=\"Mixpanel\" src=\"https://img.shields.io/badge/-Mixpanel-05122A?style=flat\u0026logo=mixpanel\" /\u003e\u0026nbsp;\n\n## 🔮 Usage\n\n### Setup External Providers\n\n\u003cdetails\u003e\n\t\u003csummary style=\"font-weight:bold;\"\u003e1️⃣ Stripe\u003c/summary\u003e\n\n   1. [Create and setup](https://dashboard.stripe.com/) your account.\n   2. Set test mode on.\n   3. Create a product with two prices: a recurring by month and a one-off (charge a one-time fee).\n   4. Copy both prices ids and paste on env: recurring on `STRIPE_SUBSCRIPTION_PRICE_ID` and one-off on `STRIPE_PAYMENT_PRICE_ID`.\n   5. Access `Settings / Billing / Customer Portal` and activate this resource.\n   6. Access `Developers / API Keys` and copy both publishable and secret key and paste it respectively on `NEXT_PUBLIC_STRIPE_PUBLIC_KEY` and `STRIPE_SECRET_KEY` env variables. \n   7. To get started with listening events, check out the below section [Listen to Stripe events](#listen-to-stripe-events)\n\u003c/details\u003e\n\n---\n\n\u003cdetails\u003e\n\t\u003csummary style=\"font-weight:bold;\"\u003e2️⃣ Google Cloud API and Services (Auth)\u003c/summary\u003e\n  \n   1. Create or use an existent [project](https://console.cloud.google.com/apis)\n   2. Setup the [OAuth consent screen](https://console.cloud.google.com/apis/credentials/consent): on authorized domains, add a domain that you own or use vercel.com in case you are deploying and using their domain.\n   3. Setup the OAuth Client on [Credentials](https://console.cloud.google.com/apis/credentials). \n      1. Authorized JavaScript Origins: `http://localhost:3000` and `https://\u003cYOUR_DOMAIN\u003e`.\n      2. Authorized Redirect URIs: `http://localhost:3000/api/auth/callback/google` and `https://\u003cYOUR_DOMAIN\u003e/api/auth/callback/google`\n   4. Copy both Client ID and Client Secret and paste it respectively on `AUTH_GOOGLE_ID`  and `AUTH_GOOGLE_SECRET` env variables.\n\u003c/details\u003e\n\n---\n\n\u003cdetails\u003e\n\t\u003csummary style=\"font-weight:bold;\"\u003e3️⃣ Firebase Firestore Database and Storage\u003c/summary\u003e\n  \n   1. Create or use a existent [project](https://console.firebase.google.com)\n   2. Setup Firebase Database and Storage, this last one needs a Google Billing account attached.\n   3. Access `Project Settings / Service Accounts` and generate a private key. A JSON file will be downloaded.\n      1. Copy the value of `project_id` to `FIREBASE_PROJECT_ID` env variable\n      2. Copy the value of `private_key` to `FIREBASE_PRIVATE_KEY` env variable\n      3. Copy the value of `client_email` to `FIREBASE_CLIENT_EMAIL` env variable\n   4. Access the Storage section and copy the bucket base url, something like `gs://in-bio-micro-saas.firebasestorage.app` and paste on `FIREBASE_STORAGE_BUCKET` env variable without `gs://`\n\u003c/details\u003e\n\n---\n\n\u003cdetails\u003e\n\t\u003csummary style=\"font-weight:bold;\"\u003e4️⃣ Google Analytics, Google Tag Manager and Mixpanel Analytics\u003c/summary\u003e\n  \n   1. `NEXT_PUBLIC_GOOGLE_TAG_MANAGER`: used to create custom tags for tracking along with Google Analytics. Theses tags are ready to be configured: `cta_home_clicks`, `create_page_effective`, `create_page_intention`, `click_to_upgrade` and `click_to_checkout`.\n   2. `NEXT_PUBLIC_GOOGLE_ANALYTICS`: used for tracking interactions on client side.\n   3. `MIXPANEL_SECRET`: used for tracking interactions with these events on server side: `page_view`, `page_create_intend`, `page_created` and `checkout_created`.\n\u003c/details\u003e\n\n---\n\n\u003cdetails\u003e\n\t\u003csummary style=\"font-weight:bold;\"\u003e5️⃣ Misc env\u003c/summary\u003e\n  \n   1. `NEXT_PUBLIC_APP_URL`: define your base domain or simply `http://localhost:3000`\n   2. `NEXT_PUBLIC_TRIAL_DAYS`: define the number of days that new users can get free access.\n   3. `NEXT_PUBLIC_MAX_PROJECTS`: define amax number of projects per page.\n   4. `AUTH_SECRET` define a random UUID used on Auth.js.\n\u003c/details\u003e\n\n---\n\n### Listen to Stripe events\n\n\u003cdetails\u003e\n\t\u003csummary style=\"font-weight:bold;\"\u003e1️⃣ Localhost\u003c/summary\u003e\n\n   1. Install [Stripe CLI](https://docs.stripe.com/stripe-cli#install).\n   2. Sign in with your account and follow th steps: `stripe login`\n   3. Forward events to webhook: `stripe listen --forward-to localhost:3000/api/stripe/webhook`\n   4. After running the last command, you will receive on terminal a webhook secret key that you can paste on `STRIPE_WEBHOOK_SECRET` env variable.\n\u003c/details\u003e\n\n---\n\n\u003cdetails\u003e\n\t\u003csummary style=\"font-weight:bold;\"\u003e2️⃣ Production\u003c/summary\u003e\n\n   1. Access `Developers / Webhooks`\n   2. Add an endpoint `https://\u003cYOUR_DOMAIN\u003e/api/stripe/webhook` and listen to these four events:\n   \t- customer.subscription.updated\n   \t- checkout.session.completed\n   \t- checkout.session.async_payment_succeeded\n   \t- customer.subscription.deleted\t\n   3. Set `STRIPE_WEBHOOK_SECRET` env with 'Signing secret' on endpoint details page.\n\u003c/details\u003e\n\n---\n\n## 🎨 Figma\nThe UI design was provided by Rocketseat, [check it out](https://www.figma.com/community/file/1456727135365574424).","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frcrdk%2Fin-bio-micro-saas","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frcrdk%2Fin-bio-micro-saas","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frcrdk%2Fin-bio-micro-saas/lists"}