{"id":28816806,"url":"https://github.com/l337glitchl337/idportal","last_synced_at":"2026-04-10T00:56:23.312Z","repository":{"id":299533878,"uuid":"989802464","full_name":"l337glitchl337/idportal","owner":"l337glitchl337","description":"📇 IDPortal is a Flask-based web app for submitting and managing photo ID requests in schools or workplaces. Supports LDAP login, admin approval, and Dockerized deployment.","archived":false,"fork":false,"pushed_at":"2025-06-17T02:19:30.000Z","size":2805,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-06-17T03:24:37.236Z","etag":null,"topics":["active","business","college","directory","docker","docker-compose","email","flask","id","ldap","photo","postgres","python"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/l337glitchl337.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-05-24T21:21:18.000Z","updated_at":"2025-06-17T02:19:33.000Z","dependencies_parsed_at":"2025-06-17T03:35:06.859Z","dependency_job_id":null,"html_url":"https://github.com/l337glitchl337/idportal","commit_stats":null,"previous_names":["l337glitchl337/idportal"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/l337glitchl337/idportal","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/l337glitchl337%2Fidportal","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/l337glitchl337%2Fidportal/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/l337glitchl337%2Fidportal/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/l337glitchl337%2Fidportal/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/l337glitchl337","download_url":"https://codeload.github.com/l337glitchl337/idportal/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/l337glitchl337%2Fidportal/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":268339633,"owners_count":24234551,"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-08-02T02:00:12.353Z","response_time":74,"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":["active","business","college","directory","docker","docker-compose","email","flask","id","ldap","photo","postgres","python"],"created_at":"2025-06-18T17:07:06.729Z","updated_at":"2025-12-30T21:51:45.993Z","avatar_url":"https://github.com/l337glitchl337.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# IDPortal\n\n**IDPortal** is a web-based platform for submitting photo ID requests in organizational settings such as schools or workplaces. Users can log in with their organization's credentials (LDAP/Active Directory) and submit ID requests without needing to visit a physical office. IT administrators can review, approve, or deny requests via a secure admin panel, and use the submitted photos to print ID cards based on a template.\n\n## 🛠 Tech Stack\n\n- **Backend:** Python (Flask)\n- **Frontend:** JavaScript, Bootstrap CSS\n- **Database:** PostgreSQL\n- **Authentication:** LDAP / Active Directory\n- **Containerization:** Docker \u0026 Docker Compose\n- **Web Server:** Nginx (with optional SSL)\n\n## 📦 Installation Instructions\n\nFollow these steps to install and run IDPortal:\n\n### 1. Install Docker and Docker Compose\n\nInstall Docker and Docker Compose by following the official guide:  \nhttps://docs.docker.com/engine/install/\n\n### 2. Clone the Repository\n\n```bash\ngit clone https://github.com/l337glitchl337/idportal.git\ncd idportal\n```\n\n### 3. Run Initialization Script\n\nRun the included setup script to generate environment variables and configure SSL:\n\n```bash\n./init.sh\n```\n\nYou will see output similar to:\n\n```\nEnvironment file created\n------------------------\nSECRET_KEY=randomkey\nPOSTGRES_PASSWORD=randompass\nPOSTGRES_DB=idportal\nPOSTGRES_USER=idportal\nPOSTGRES_PORT=5432\nPOSTGRES_HOST=db\nLOGO=portal_logo.png\n\nSetting up nginx ssl config..\ndocker/nginx/certs already exists, continuing.\nWould you like to create a self signed cert for testing?[y\\n]:\u003e y\n... [cert generation output] ...\nDone\n```\n\nYou can optionally create a self-signed certificate for testing by entering `y`.  \nAfter testing, you can replace the generated cert and key in `docker/nginx/certs` with CA-signed versions for production.\n\n**Note:** You may edit the `.env` file after it is generated to change passwords, usernames, or logo filename.\n\n### 4. Build Docker Containers\n\nRun the following command to build the Docker images and bring up the services:\n\n```bash\ndocker compose up --build\n```\n\nOnce the build is complete, press `Ctrl+C` to stop the containers.\n\n### 5. Create Application Config File\n\nCreate the app config file at the following path inside the Docker volume:\n\n```bash\nsudo nano /var/lib/docker/volumes/idportal_config/_data/config.py\n```\n\nRefer to `example.config.py` in the project root to structure your configuration.  \nThis includes LDAP connection settings and application-specific options.\n\n### 6. Start the Application\n\nNow that the config file is in place, start the containers in detached mode:\n\n```bash\ndocker compose up -d\n```\n\n### 7. Access the Portal\n\nOpen your browser and go to:\n\n```\nhttps://localhost\n```\nor\n```\nhttps://localhost/admin\n```\nA default admin account is already created for you to log in:\n\n```\nUsername: Admin\nPassword: PassWord1#\n```\n\nYou can now log in with your organization's credentials and begin submitting or approving ID requests.\n\n## 🔐 Additional Notes\n\n- `.env` — Stores secrets and environment variables (e.g., DB credentials, Flask secret key)\n- `docker/nginx/certs/` — Holds SSL certificates (self-signed or from a certificate authority)\n- `/var/lib/docker/volumes/idportal_config/_data/config.py` — App-specific configuration file\n- `/var/lib/docker/volumes/idportal_logs/_data` - Holds app-specific logs\n- `/var/lib/docker/volumes/idportal_pgdata/_data` - Holds postgres database files\n- `/var/lib/docker/volumes/idportal_uploads/_data` - Holds uploaded photos\n\n## 📄 License\n\nThis project is licensed under the MIT License. See the [LICENSE](LICENSE) file for details.\n\n## 🤝 Contributing\n\nContributions, suggestions, and pull requests are welcome! Please submit issues or PRs to help improve IDPortal.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fl337glitchl337%2Fidportal","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fl337glitchl337%2Fidportal","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fl337glitchl337%2Fidportal/lists"}