{"id":47819126,"url":"https://github.com/solomonkassa/elixir-starter-kit","last_synced_at":"2026-04-03T19:01:42.784Z","repository":{"id":334730252,"uuid":"1142523136","full_name":"Solomonkassa/elixir-starter-kit","owner":"Solomonkassa","description":"🎯 Elixir Starter Kit A production-ready Elixir starter template with Phoenix Framework, ready for deployment. Perfect for building scalable web applications and APIs.","archived":false,"fork":false,"pushed_at":"2026-01-26T14:59:26.000Z","size":70,"stargazers_count":3,"open_issues_count":0,"forks_count":3,"subscribers_count":3,"default_branch":"main","last_synced_at":"2026-01-27T03:32:39.583Z","etag":null,"topics":["elixir","elixir-phoenix","phoenix-framework","template"],"latest_commit_sha":null,"homepage":"","language":"Elixir","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/Solomonkassa.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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-01-26T14:22:29.000Z","updated_at":"2026-01-26T15:36:44.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/Solomonkassa/elixir-starter-kit","commit_stats":null,"previous_names":["solomonkassa/elixir-starter-kit"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/Solomonkassa/elixir-starter-kit","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Solomonkassa%2Felixir-starter-kit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Solomonkassa%2Felixir-starter-kit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Solomonkassa%2Felixir-starter-kit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Solomonkassa%2Felixir-starter-kit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Solomonkassa","download_url":"https://codeload.github.com/Solomonkassa/elixir-starter-kit/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Solomonkassa%2Felixir-starter-kit/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31371636,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-03T17:53:18.093Z","status":"ssl_error","status_checked_at":"2026-04-03T17:53:17.617Z","response_time":107,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: 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":["elixir","elixir-phoenix","phoenix-framework","template"],"created_at":"2026-04-03T19:01:30.693Z","updated_at":"2026-04-03T19:01:42.756Z","avatar_url":"https://github.com/Solomonkassa.png","language":"Elixir","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🎯 Elixir Starter Kit\n\nA production-ready Elixir starter template with Phoenix Framework, ready for deployment. Perfect for building scalable web applications and APIs.\n\n## 🚀 Quick Start\n\n### Prerequisites\n- Elixir 1.15+ (Install via [asdf](https://asdf-vm.com/) or [official installer](https://elixir-lang.org/install.html))\n- PostgreSQL 14+\n- Node.js 18+ (for assets)\n- Git\n\n### Setup in 5 minutes\n\n```bash\n# 1. Clone the repository\ngit clone https://github.com/Solomonkassa/elixir-starter-kit.git\ncd elixir-starter-kit\n\n# 2. Setup environment\ncp .env.example .env\n# Edit .env with your database credentials\n\n# 3. Setup dependencies\nmix setup\n\n# 4. Start the application\nmix phx.server\n```\n\nVisit `http://localhost:4000` to see your application running.\n\n## ✨ Features\n\n### 🏗️ **Architecture**\n- Phoenix 1.7 with LiveView\n- Clean Domain-Driven Design (DDD) structure\n- Context-based business logic organization\n- API-first design with REST \u0026 GraphQL support\n\n### 🔐 **Security**\n- Built-in authentication (User, Admin)\n- OAuth2 support (Google, GitHub)\n- Role-based authorization (RBAC)\n- SSL/TLS ready\n- CSRF, XSS, CORS protection\n\n### 📦 **Development Tools**\n- Live reload with Phoenix\n- Interactive IEx shell with helpers\n- Code formatting (mix format)\n- Static analysis (Credo, Dialyzer)\n- Git hooks for quality checks\n\n### 🗄️ **Database**\n- PostgreSQL with Ecto\n- Database seeding\n- Migrations with rollback support\n- Query optimization (Ecto.Query)\n- Soft deletes with `deleted_at`\n\n### 🧪 **Testing**\n- Unit tests (ExUnit)\n- Integration tests\n- Property-based testing (StreamData)\n- Test coverage (ExCoveralls)\n- CI/CD ready\n\n## 📁 Project Structure\n\n```\nelixir-starter-kit/\n├── lib/\n│   ├── starter/                  # Application core\n│   │   ├── accounts/             # User/Account management\n│   │   ├── blog/                 # Blog module example\n│   │   ├── core/                 # Shared utilities\n│   │   └── web/                  # Web interface (controllers, views)\n│   │       ├── controllers/      # REST controllers\n│   │       ├── live/             # LiveView components\n│   │       └── views/            # View modules\n│   └── starter_web.ex           # Web endpoint\n├── test/                         # Test suite\n├── assets/                       # Frontend assets (JS, CSS)\n├── priv/repo/                    # Database migrations\n└── config/                       # Configuration\n```\n\n## 🛠️ Development Commands\n\n```bash\n# Start development server\nmix phx.server\n\n# Run tests\nmix test\nmix test.watch  # Watch mode\n\n# Code quality\nmix format      # Format code\nmix credo       # Static analysis\nmix dialyzer    # Type checking\n\n# Database\nmix ecto.setup  # Create, migrate, seed\nmix ecto.migrate\nmix ecto.rollback\nmix ecto.reset  # Reset database\n\n# Dependencies\nmix deps.get    # Get dependencies\nmix deps.update # Update dependencies\n\n# Production\nmix release     # Create release\nMIX_ENV=prod mix phx.server  # Production mode\n```\n\n## 🌐 API Endpoints\n\n### REST API (JSON)\n```\nGET    /api/v1/posts          # List posts\nPOST   /api/v1/posts          # Create post\nGET    /api/v1/posts/:id      # Get post\nPUT    /api/v1/posts/:id      # Update post\nDELETE /api/v1/posts/:id      # Delete post\n```\n\n### Authentication\n```\nPOST   /api/v1/auth/register  # Register user\nPOST   /api/v1/auth/login     # Login\nPOST   /api/v1/auth/logout    # Logout\nGET    /api/v1/auth/me        # Current user\n```\n\n### GraphQL (Optional)\n```\nPOST   /api/graphql           # GraphQL endpoint\nGET    /api/graphiql          # GraphQL playground\n```\n\n## 📊 Database Schema\n\n```sql\n-- Users table\nCREATE TABLE users (\n  id UUID PRIMARY KEY,\n  email VARCHAR(255) UNIQUE NOT NULL,\n  name VARCHAR(255),\n  role VARCHAR(50) DEFAULT 'user',\n  inserted_at TIMESTAMP,\n  updated_at TIMESTAMP\n);\n\n-- Posts table (example)\nCREATE TABLE posts (\n  id UUID PRIMARY KEY,\n  title VARCHAR(500) NOT NULL,\n  content TEXT,\n  user_id UUID REFERENCES users(id),\n  published_at TIMESTAMP,\n  inserted_at TIMESTAMP,\n  updated_at TIMESTAMP\n);\n```\n\n## 🚢 Deployment\n\n### Option 1: Docker (Recommended)\n```bash\n# Build and run with Docker Compose\ndocker-compose up --build\n\n# Or with Docker\ndocker build -t elixir-starter .\ndocker run -p 4000:4000 elixir-starter\n```\n\n### Option 2: Fly.io (Free Tier)\n```bash\n# Install Fly CLI\nfly auth login\n\n# Deploy\nfly launch\nfly deploy\n```\n\n### Option 3: Heroku\n```bash\n# Create Heroku app\nheroku create your-app-name\n\n# Add buildpacks\nheroku buildpacks:add https://github.com/HashNuke/heroku-buildpack-elixir\nheroku buildpacks:add https://github.com/gjaldon/heroku-buildpack-phoenix-static\n\n# Deploy\ngit push heroku main\n```\n\n### Option 4: Gigalixir\n```bash\n# Install Gigalixir CLI\npip install gigalixir --user\n\n# Create app\ngigalixir create\n\n# Set config\ngigalixir config:set POOL_SIZE=2\n\n# Deploy\ngit push gigalixir main\n```\n\n## 📈 Monitoring \u0026 Observability\n\n### Built-in Metrics\n- Prometheus metrics endpoint (`/metrics`)\n- Health checks (`/health`)\n- Request logging\n- Error tracking\n\n### Optional Integrations\n- **Sentry** for error reporting\n- **AppSignal** for performance monitoring\n- **Logflare** for log management\n- **Datadog** for APM\n\n## 🔧 Configuration\n\n### Environment Variables\n```bash\n# Required\nDATABASE_URL=postgresql://user:pass@localhost:5432/db_name\nSECRET_KEY_BASE=your-secret-key-base\n\n# Optional\nPORT=4000\nHOSTNAME=localhost\nPOOL_SIZE=10\nSENTRY_DSN=your-sentry-dsn\n```\n\n### Production Configuration\nEdit `config/runtime.exs` for production settings:\n```elixir\nconfig :starter, StarterWeb.Endpoint,\n  url: [host: System.get_env(\"HOSTNAME\"), port: 443],\n  http: [port: {:system, \"PORT\"}],\n  secret_key_base: System.get_env(\"SECRET_KEY_BASE\")\n```\n\n## 🤝 Contributing\n\n1. Fork the repository\n2. Create a feature branch (`git checkout -b feature/amazing-feature`)\n3. Commit changes (`git commit -m 'Add amazing feature'`)\n4. Push to branch (`git push origin feature/amazing-feature`)\n5. Open a Pull Request\n\n### Development Guidelines\n- Follow the [Elixir Style Guide](https://github.com/christopheradams/elixir_style_guide)\n- Write tests for new features\n- Update documentation\n- Use conventional commits\n\n## 📚 Learning Resources\n\n- [Phoenix Framework Guide](https://hexdocs.pm/phoenix/overview.html)\n- [Elixir School](https://elixirschool.com/)\n- [Elixir Forum](https://elixirforum.com/)\n- [Awesome Elixir](https://github.com/h4cc/awesome-elixir)\n\n## 📄 License\n\nMIT License - see [LICENSE](LICENSE) file for details.\n\n## 🙏 Acknowledgments\n\n- [Phoenix Framework](https://www.phoenixframework.org/) team\n- [Elixir](https://elixir-lang.org/) community\n- All contributors and users\n\n---\n\n## 📞 Support\n\n- **Issues**: [GitHub Issues](https://github.com/yourusername/elixir-starter-kit/issues)\n- **Discussions**: [GitHub Discussions](https://github.com/yourusername/elixir-starter-kit/discussions)\n- **Email**: support@example.com\n\n---\n\n**Happy coding with Elixir!** 🎉\n\n## 🎯 Quick Commands Cheat Sheet\n\n```bash\n# Setup\nmix setup\n\n# Development\nmix phx.server\nmix test\n\n# Code Quality\nmix format\nmix credo\n\n# Database\nmix ecto.migrate\nmix ecto.reset\n\n# Production\nmix release\nmix phx.server --env prod\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsolomonkassa%2Felixir-starter-kit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsolomonkassa%2Felixir-starter-kit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsolomonkassa%2Felixir-starter-kit/lists"}