{"id":26028580,"url":"https://github.com/dud0sinka/wehavetwitterathome","last_synced_at":"2026-04-11T17:03:05.912Z","repository":{"id":280341501,"uuid":"939639040","full_name":"dud0sinka/weHaveTwitterAtHome","owner":"dud0sinka","description":"A secure Flask-based web application with simple twitter-like posts.","archived":false,"fork":false,"pushed_at":"2025-03-02T21:48:44.000Z","size":28,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-01-03T22:02:16.549Z","etag":null,"topics":["docker","flask","nginx","posting","python","secure","web"],"latest_commit_sha":null,"homepage":"","language":"Python","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/dud0sinka.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-02-26T21:32:11.000Z","updated_at":"2025-03-02T21:48:47.000Z","dependencies_parsed_at":"2025-03-02T21:40:39.501Z","dependency_job_id":null,"html_url":"https://github.com/dud0sinka/weHaveTwitterAtHome","commit_stats":null,"previous_names":["dud0sinka/wehavetwitterathome"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/dud0sinka/weHaveTwitterAtHome","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dud0sinka%2FweHaveTwitterAtHome","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dud0sinka%2FweHaveTwitterAtHome/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dud0sinka%2FweHaveTwitterAtHome/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dud0sinka%2FweHaveTwitterAtHome/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dud0sinka","download_url":"https://codeload.github.com/dud0sinka/weHaveTwitterAtHome/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dud0sinka%2FweHaveTwitterAtHome/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31687882,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-11T13:07:20.380Z","status":"ssl_error","status_checked_at":"2026-04-11T13:06:47.903Z","response_time":54,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5: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":["docker","flask","nginx","posting","python","secure","web"],"created_at":"2025-03-06T17:18:45.938Z","updated_at":"2026-04-11T17:03:05.878Z","avatar_url":"https://github.com/dud0sinka.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ca id=\"readme-top\"\u003e\u003c/a\u003e\n\n\u003cbr /\u003e\n\u003cdiv align=\"center\"\u003e\n\n\u003ch1 align=\"center\"\u003eFlask Dockerized Web Application\u003c/h3\u003e\n\n  \u003cp align=\"center\"\u003e\n    A secure, containerized Flask web messaging/posting application with Nginx as a reverse proxy.\n    \u003cbr /\u003e\n  \u003c/p\u003e\n\u003c/div\u003e\n\n\u003c!-- ABOUT THE PROJECT --\u003e\n## About The Project\n\n![Image](https://github.com/user-attachments/assets/a12546cd-ee07-414a-a1bc-bfc98dc15d4e)\n\nThis project is a Flask-based messaging application containerized with Docker and secured with Nginx as a reverse proxy. It includes user authentication, two-factor authentication (TOTP), password recovery, and PostgreSQL database support. The application follows security best practices, ensuring input validation, data sanitization, and logging for login attempts.\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n### Built With\n\n- ![Flask](https://img.shields.io/badge/Flask-000000?style=flat\u0026logo=flask) [Flask](https://flask.palletsprojects.com/en/stable/)\n- ![Docker](https://img.shields.io/badge/Docker-2496ED?style=flat\u0026logo=docker\u0026logoColor=white) [Docker](https://www.docker.com/)\n- ![Nginx](https://img.shields.io/badge/Nginx-269539?style=flat\u0026logo=nginx\u0026logoColor=white) [Nginx](https://nginx.org/)\n- ![PostgreSQL](https://img.shields.io/badge/PostgreSQL-336791?style=flat\u0026logo=postgresql\u0026logoColor=white) [PostgreSQL](https://www.postgresql.org/)\n\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\u003c!-- GETTING STARTED --\u003e\n## Getting Started\n\nFollow the instructions below to set up and run the project locally.\n\n### Prerequisites\n\nEnsure you have the following installed:\n\n- Docker\n- Nginx\n- Python 3.10+\n\n### Installation\n\n1. Clone the repository:\n   ```sh\n   git clone https://github.com/github_username/repo_name.git\n   cd repo_name\n   ```\n2. Create and configure the `.env` file:\n   ```sh\n   cp .env.example .env\n   ```\n   Modify the `.env` file with the appropriate database credentials and secret keys.\n3. Build and start the containers:\n   ```sh\n   docker-compose up --build\n   ```\n4. Generate self-signed SSL certificates with:\n   ```bash\n   mkdir -p ./certs\n   openssl req -x509 -newkey rsa:4096 -keyout ./certs/key.pem -out ./certs/cert.pem -days 365 -nodes\n   ```\n5. Access the application at `https://localhost`\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\u003c!-- USAGE EXAMPLES --\u003e\n## Usage\n\nThis project provides:\n- Secure user authentication with password hashing\n- Two-factor authentication using TOTP\n- Secure password recovery process\n- Posting messages with basic formatting\n- Auto-signing and verifying message integrity (a little sign indicating whether the message has been tampered with)\n- Restoring access to the account\n- Viewing each user's profile with all their posts\n- Monitoring login attempts (successfull or not, IP, user agent, timestamp)\n- Thorough user input sanitization and validation\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\u003c!-- CONTRIBUTING --\u003e\n## Contributing\n\nContributions are welcome! Please follow these steps:\n1. Fork the repository\n2. Create a feature branch (`git checkout -b feature/AmazingFeature`)\n3. Commit your changes (`git commit -m 'Add some AmazingFeature'`)\n4. Push to the branch (`git push origin feature/AmazingFeature`)\n5. Open a pull request\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\u003c!-- CONTACT --\u003e\n## Contact\n\n**Gmail** – [kravtsov2109@gmail.com](mailto:kravtsov2109@gmail.com)\n\n**LinkedIn** – [Serhii Kravtsov](https://www.linkedin.com/in/serhii-kravtsov-/)\n\n**Facebook** – [Serhii Kravtsov](https://www.facebook.com/dud0sinka/)\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdud0sinka%2Fwehavetwitterathome","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdud0sinka%2Fwehavetwitterathome","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdud0sinka%2Fwehavetwitterathome/lists"}