{"id":29016423,"url":"https://github.com/statuswise/statuswise","last_synced_at":"2026-04-06T01:01:49.452Z","repository":{"id":300784994,"uuid":"1006751528","full_name":"StatusWise/statuswise","owner":"StatusWise","description":"FOSS SaaS status board","archived":false,"fork":false,"pushed_at":"2025-06-23T15:58:15.000Z","size":163,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-06-23T16:27:38.064Z","etag":null,"topics":["devops","docker","fastapi","incident-management","nextjs","open-source","python","saas","self-hosted","status-page","uptime-monitoring"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/StatusWise.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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":"2025-06-22T23:36:44.000Z","updated_at":"2025-06-23T15:58:19.000Z","dependencies_parsed_at":"2025-06-23T16:28:26.383Z","dependency_job_id":null,"html_url":"https://github.com/StatusWise/statuswise","commit_stats":null,"previous_names":["statuswise/statuswise"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/StatusWise/statuswise","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/StatusWise%2Fstatuswise","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/StatusWise%2Fstatuswise/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/StatusWise%2Fstatuswise/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/StatusWise%2Fstatuswise/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/StatusWise","download_url":"https://codeload.github.com/StatusWise/statuswise/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/StatusWise%2Fstatuswise/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261960448,"owners_count":23236575,"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":["devops","docker","fastapi","incident-management","nextjs","open-source","python","saas","self-hosted","status-page","uptime-monitoring"],"created_at":"2025-06-25T22:08:17.487Z","updated_at":"2026-04-06T01:01:49.421Z","avatar_url":"https://github.com/StatusWise.png","language":"JavaScript","readme":"# StatusWise — Open Source Status Page SaaS\n\n**Self-hostable, privacy-first status pages for SaaS, startups, and agencies.**\n\n---\n\n## 🌟 Why StatusWise?\n\nStatusWise provides a powerful, self-hostable alternative to services like Statuspage.io, offering full data control and extensive customization.\n\n*   🚀 **Fast Setup**: Deploy a beautiful, responsive status page in minutes using Docker.\n*   🔒 **Privacy-First**: Self-host to keep full ownership and control of your incident and subscriber data.\n*   🔐 **Google OAuth**: Secure authentication using Google OAuth - no passwords to manage.\n*   🎨 **Custom Branding**: Customize the logo, colors, and layout to match your brand identity.\n*   🧩 **Integrations**: Notify your users via Slack, Email, and Webhooks.\n*   🌐 **Multi-language Support**: Communicate with your audience in their native language.\n*   🖥️ **Developer-Friendly**: Built with a modern tech stack and includes a full-featured API.\n\n---\n\n## 🎯 Use Cases\n\n* SaaS incident reporting\n* Internal status dashboards\n* Client communication for agencies\n* Compliance-friendly public uptime reporting\n\n---\n\n## 🛠 Tech Stack\n\nStatusWise is built with a modern, robust, and scalable technology stack.\n\n*   **Backend**: **Python 3.11+** with **FastAPI** for high-performance API services.\n    *   Database ORM: **SQLAlchemy**\n    *   Authentication: **Google OAuth 2.0** with **python-jose** for JWT tokens\n*   **Frontend**: **Next.js 15+** (React) for a fast, modern user interface.\n    *   Styling: **Tailwind CSS** for utility-first CSS\n    *   Testing: **Jest** and **React Testing Library**\n*   **Database**: **PostgreSQL** for reliable and robust data storage.\n*   **Deployment**: **Docker Compose** for easy, reproducible local and production deployments.\n*   **Billing**: **Lemon Squeezy** for subscription management in the SaaS version.\n\n---\n\n## 🚀 Quick Start (Self-Hosted)\n\nGet your self-hosted StatusWise instance running in just a few steps.\n\n**1. Clone the repository:**\n```bash\ngit clone https://github.com/StatusWise/statuswise.git\ncd statuswise\n```\n\n**2. Set up Google OAuth:**\n\nBefore running StatusWise, you need to set up Google OAuth:\n\n1. Go to the [Google Cloud Console](https://console.cloud.google.com/)\n2. Create a new project or select an existing one\n3. Enable the **Google+ API** or **Google Identity** API\n4. Go to **Credentials** → **Create Credentials** → **OAuth 2.0 Client IDs**\n5. Configure the OAuth consent screen\n6. Set **Authorized JavaScript origins**: `http://localhost:3000` (for development)\n7. Set **Authorized redirect URIs**: `http://localhost:3000` (for development)\n8. Copy your **Client ID** and **Client Secret**\n\n**3. Set up environment variables:**\n\nCopy the example environment files and configure them with your Google OAuth credentials:\n\n```bash\ncp backend/env.example backend/.env\ncp frontend/env.example frontend/.env\n```\n\n**Edit `backend/.env`:**\n```bash\n# Required: Google OAuth\nGOOGLE_CLIENT_ID=your-google-client-id-here\nGOOGLE_CLIENT_SECRET=your-google-client-secret-here\n\n# Admin user (automatically becomes admin on first login)\nADMIN_EMAIL=your-email@example.com\n\n# Database\nDATABASE_URL=postgresql://postgres:postgres@localhost:5432/statuswise\n\n# Security\nSECRET_KEY=your-secret-key-here\nJWT_SECRET=your-jwt-secret-here\n\n# Feature toggles\nENABLE_BILLING=false\nENABLE_ADMIN=true\n```\n\n**Edit `frontend/.env`:**\n```bash\nNEXT_PUBLIC_API_URL=http://localhost:8000\nNEXT_PUBLIC_GOOGLE_CLIENT_ID=your-google-client-id-here\n```\n\n**4. Build and run with Docker Compose:**\n```bash\ndocker compose up --build -d\n```\n\n**5. Access your instance:**\n*   **Frontend**: [http://localhost:3000](http://localhost:3000)\n*   **API**: [http://localhost:8000/docs](http://localhost:8000/docs) (Interactive API documentation)\n\n**First Login:**\n- Navigate to [http://localhost:3000](http://localhost:3000)\n- Click \"Sign in with Google\" \n- Sign in with the Google account matching your `ADMIN_EMAIL`\n- You'll automatically be granted admin privileges\n- Access the admin dashboard to manage users and system settings\n\n---\n\n## ⚙️ Feature Toggles\n\nStatusWise supports configurable features that can be enabled or disabled based on your deployment needs:\n\n### Environment Variables\n\n```bash\n# Feature Toggles (default: false for secure-by-default)\nENABLE_BILLING=false    # Enable subscription management and billing\nENABLE_ADMIN=true      # Enable admin dashboard and user management\n```\n\n### Deployment Scenarios\n\n**Personal/Internal Use:**\n```bash\nENABLE_BILLING=false\nENABLE_ADMIN=true\n```\n- No subscription limits (unlimited projects)\n- Admin functionality for user management\n- No payment processing required\n\n**SaaS Deployment:**\n```bash\nENABLE_BILLING=true\nENABLE_ADMIN=true\n```\n- Full subscription management with Lemon Squeezy\n- Admin dashboard for system management\n- Project limits based on subscription tiers\n\n**Simple Status Page:**\n```bash\nENABLE_BILLING=false\nENABLE_ADMIN=false\n```\n- Core incident management only\n- No user management overhead\n- Perfect for single-team usage\n\nFor detailed configuration instructions, see [`docs/FEATURE_TOGGLES.md`](./docs/FEATURE_TOGGLES.md).\n\n---\n\n## 📁 Project Structure\n\nA high-level overview of the repository structure:\n\n```\n.\n├── backend/        # FastAPI backend application\n├── docs/           # Project and workflow documentation\n├── frontend/       # Next.js frontend application\n├── .github/        # GitHub Actions workflows\n├── docker-compose.yml\n└── README.md\n```\n\n---\n\n## 🤝 Contributing\n\nWe welcome contributions from the community! Whether you want to fix a bug, add a feature, or improve the documentation, your help is appreciated.\n\n*   **Bug Reports \u0026 Feature Requests**: Please open an issue on our [GitHub Issues](https://github.com/StatusWise/statuswise/issues) page.\n*   **Development**: If you'd like to contribute code, please see our `CONTRIBUTING.md` file for guidelines (coming soon!).\n\n---\n\n## 📄 License\n\nStatusWise is open-source and licensed under the **MIT License**.\n\n---\n\n## 📚 Documentation\n\nComprehensive documentation for setup, configuration, and development can be found in the [`docs/`](./docs) directory:\n\n- [**Feature Toggles**](./docs/FEATURE_TOGGLES.md) - Configure billing and admin features\n- [**Admin Dashboard**](./docs/ADMIN_DASHBOARD.md) - Admin interface setup and usage\n- [**Testing Guide**](./docs/TESTING.md) - Testing strategy and running tests\n- [**Development Guide**](./docs/DEVELOPMENT.md) - Development setup and workflows\n- [**GitHub Actions Workflows**](./docs/actions_workflows.md) - CI/CD pipeline documentation\n\n---\n\n## 🔗 Links\n\n*   **Website**: [https://statuswise.dev](https://statuswise.dev)\n*   **Twitter**: [@StatusWiseApp](https://twitter.com/StatusWiseApp)","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstatuswise%2Fstatuswise","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstatuswise%2Fstatuswise","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstatuswise%2Fstatuswise/lists"}