{"id":29625589,"url":"https://github.com/maxonary/code-events-api","last_synced_at":"2025-09-03T08:44:42.869Z","repository":{"id":301754792,"uuid":"945952807","full_name":"maxonary/code-events-api","owner":"maxonary","description":"AI powered FastAPI App to display events at CODE University","archived":false,"fork":false,"pushed_at":"2025-06-28T15:56:18.000Z","size":121,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-07-21T06:50:41.875Z","etag":null,"topics":["fastapi","jira","llm","luma","slack","sqlalchemy"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/maxonary.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-03-10T11:39:15.000Z","updated_at":"2025-06-28T16:55:03.000Z","dependencies_parsed_at":"2025-06-28T16:49:26.883Z","dependency_job_id":"67f6231a-4bc4-4eb8-91e3-e24c2149718f","html_url":"https://github.com/maxonary/code-events-api","commit_stats":null,"previous_names":["maxonary/code-events-api"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/maxonary/code-events-api","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maxonary%2Fcode-events-api","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maxonary%2Fcode-events-api/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maxonary%2Fcode-events-api/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maxonary%2Fcode-events-api/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/maxonary","download_url":"https://codeload.github.com/maxonary/code-events-api/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maxonary%2Fcode-events-api/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273416508,"owners_count":25101808,"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-09-03T02:00:09.631Z","response_time":76,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","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":["fastapi","jira","llm","luma","slack","sqlalchemy"],"created_at":"2025-07-21T06:37:32.387Z","updated_at":"2025-09-03T08:44:42.842Z","avatar_url":"https://github.com/maxonary.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Campus Event Organizer API\n\nA FastAPI-based application for organizing and managing events on a university campus. It allows users to create, retrieve, and filter events based on time range and visibility settings. The application integrates with Google Calendar, Slack, and LumaEvents, while leveraging an LLM to process event descriptions.\n\n## 🚀 Features\n\n- **Event Management**: Create, retrieve, and filter events\n- **Time Filtering**: Show recent and future events\n- **Visibility Options**: Events can be public, private, or university-only\n- **MongoDB Storage**: Events are stored in MongoDB for efficient querying\n- **Modular Integrations**:\n  - **Jira**: Source events from Tickets\n  - **Google Calendar**: Sync events\n  - **Slack Notifications**: Notify a Slack channel about new events\n  - **Luma Events**: Manage RSVPs\n  - **LLM Processing**: Automatically process event descriptions\n\n## 🛠️ Tech Stack\n\n- **FastAPI**: Modern, fast web framework for building APIs\n- **MongoDB**: NoSQL database (using Motor for async operations)\n- **Pydantic**: Data validation using Python type annotations\n- **Jira API**: Event sourcing from project management\n- **Google Calendar API**: Event synchronization\n- **Slack API**: Event sourcing via LLM\n- **Luma Events API**: Event management\n- **OpenAI API**: Event description processing\n\n## 📋 Prerequisites\n\n- Python 3.9 or higher\n- MongoDB (local or cloud)\n- API keys for integrations (Google, Slack, OpenAI, Jira)\n\n## 🚀 Quick Start\n\n### Option 1: Automated Setup (Recommended)\n\n```bash\n# Clone the repository\ngit clone https://github.com/yourusername/campus-event-organizer.git\ncd campus-event-organizer\n\n# Run the setup script\npython scripts/setup_dev.py\n```\n\n### Option 2: Manual Setup\n\n1. **Clone the Repository**\n   ```bash\n   git clone https://github.com/yourusername/campus-event-organizer.git\n   cd campus-event-organizer\n   ```\n\n2. **Create Virtual Environment**\n   ```bash\n   python -m venv venv\n   source venv/bin/activate  # On Windows: venv\\Scripts\\activate\n   ```\n\n3. **Install Dependencies**\n   ```bash\n   # Install production dependencies\n   uv pip install -e .\n   \n   # Or install with development tools\n   uv pip install -e \".[dev]\"\n   ```\n\n4. **Environment Configuration**\n   ```bash\n   cp env.example .env\n   # Edit .env with your API keys and configuration\n   ```\n\n5. **Start MongoDB**\n   ```bash\n   # Local MongoDB\n   mongod --dbpath /path/to/your/db\n   \n   # Or use Docker\n   docker run -d -p 27017:27017 --name mongodb mongo:7.0\n   ```\n\n6. **Run the Application**\n   ```bash\n   uvicorn app.main:app --reload\n   ```\n\n### Option 3: Docker Compose (Easiest)\n\n```bash\n# Clone and setup\ngit clone https://github.com/yourusername/campus-event-organizer.git\ncd campus-event-organizer\n\n# Copy environment template\ncp env.example .env\n# Edit .env with your configuration\n\n# Start services\ndocker-compose up -d\n```\n\n## 🔧 Configuration\n\nCreate a `.env` file with the following variables:\n\n```env\n# Database Configuration\nMONGO_URI=mongodb://localhost:27017\nDB_NAME=campus_events\n\n# API Keys\nGOOGLE_API_KEY=your_google_api_key_here\nSLACK_WEBHOOK_URL=your_slack_webhook_url_here\nOPENAI_API_KEY=your_openai_api_key_here\n\n# Jira Configuration\nJIRA_URL=https://your-domain.atlassian.net\nJIRA_USERNAME=your_jira_username\nJIRA_API_TOKEN=your_jira_api_token\n\n# Application Settings\nDEBUG=True\nLOG_LEVEL=INFO\n```\n\n## 📚 API Documentation\n\nOnce the application is running, visit:\n- **Interactive API Docs**: http://localhost:8000/docs\n- **ReDoc Documentation**: http://localhost:8000/redoc\n- **Health Check**: http://localhost:8000/health\n\n### Example API Usage\n\n#### Create an Event\n```bash\ncurl -X POST \"http://localhost:8000/events/\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"name\": \"Campus Tech Talk\",\n    \"date\": \"2025-03-15T15:00:00\",\n    \"description\": \"A discussion on emerging technologies.\",\n    \"visibility\": \"university-only\",\n    \"location\": \"Main Auditorium\"\n  }'\n```\n\n#### Get Events with Filters\n```bash\n# Get all events\ncurl \"http://localhost:8000/events/\"\n\n# Filter by visibility\ncurl \"http://localhost:8000/events/?visibility=public\"\n\n# Filter by time range\ncurl \"http://localhost:8000/events/?start_time=2025-01-01T00:00:00\u0026end_time=2025-12-31T23:59:59\"\n```\n\n## 🧪 Testing\n\nRun the test suite:\n\n```bash\n# Run all tests\npytest\n\n# Run with coverage\npytest --cov=app\n\n# Run specific test file\npytest tests/test_events.py\n```\n\n## 🚀 Deployment\n\n### Docker Deployment\n\n```bash\n# Build and run with Docker\ndocker build -t campus-event-organizer .\ndocker run -p 8000:8000 --env-file .env campus-event-organizer\n```\n\n### Legacy Deployment (requires requirements.txt)\n\nIf your deployment platform requires `requirements.txt`:\n\n```bash\n# Generate requirements.txt from pyproject.toml\nmake generate-requirements\n\n# This creates:\n# - requirements.txt (production dependencies)\n# - requirements-dev.txt (development dependencies)\n```\n\n### Production Considerations\n\n1. **Environment Variables**: Use proper secrets management\n2. **Database**: Use MongoDB Atlas or managed MongoDB service\n3. **CORS**: Configure allowed origins for production\n4. **Logging**: Set up proper logging and monitoring\n5. **SSL/TLS**: Use HTTPS in production\n6. **Rate Limiting**: Implement API rate limiting\n7. **Health Checks**: Monitor application health\n\n### Deployment Platforms\n\n- **Heroku**: Use the provided Dockerfile\n- **AWS**: Deploy to ECS or EKS\n- **Google Cloud**: Deploy to Cloud Run or GKE\n- **Azure**: Deploy to Container Instances or AKS\n\n## 🤝 Contributing\n\n1. Fork the repository\n2. Create a feature branch (`git checkout -b feature/amazing-feature`)\n3. Commit your changes (`git commit -m 'Add amazing feature'`)\n4. Push to the branch (`git push origin feature/amazing-feature`)\n5. Open a Pull Request\n\n## 📝 Development\n\n### Project Structure\n```\ncode-events-api/\n├── app/\n│   ├── config.py          # Configuration management\n│   ├── database.py        # Database connection\n│   ├── main.py           # FastAPI application\n│   ├── models.py         # Pydantic models\n│   ├── routes/           # API routes\n│   ├── services/         # Business logic\n│   └── utils/            # Utilities\n├── tests/                # Test files\n├── scripts/              # Development scripts\n├── docker-compose.yml    # Docker services\n├── Dockerfile           # Container configuration\n└── pyproject.toml       # Project metadata and dependencies\n```\n\n### Code Style\n\nThis project follows PEP 8 and uses:\n- **Black** for code formatting\n- **isort** for import sorting\n- **flake8** for linting\n- **mypy** for type checking\n\n### Development Commands\n\n```bash\n# Install development dependencies\nmake install-dev\n\n# Run development server\nmake run\n\n# Format code\nmake format\n\n# Run tests\nmake test\n\n# Run all quality checks\nmake check\n\n# Generate requirements.txt (if needed)\nmake generate-requirements\n```\n\n## 📄 License\n\nThis project is licensed under the Apache 2.0 License - see the [LICENSE](LICENSE) file for details.\n\n## 🆘 Support\n\nFor support questions around setup or database access, contact Maximilian Arnold at [email](mailto:maximilian.arnold@code.berlin)\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaxonary%2Fcode-events-api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmaxonary%2Fcode-events-api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaxonary%2Fcode-events-api/lists"}