{"id":17701491,"url":"https://github.com/moheladwy/todofullstack","last_synced_at":"2026-01-23T07:05:07.948Z","repository":{"id":259129680,"uuid":"859087164","full_name":"moheladwy/TodoFullstack","owner":"moheladwy","description":"This is my Todo Fullstack Application made by ASP.NET Core 8 Web API for the backend, SQL Server for the DB and ReactTS for the frontend.","archived":false,"fork":false,"pushed_at":"2025-01-25T21:38:32.000Z","size":879,"stargazers_count":1,"open_issues_count":8,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-05-06T20:41:13.933Z","etag":null,"topics":["api-deployment","asp-api","asp-api-dockerfile","asp-api-pipeline","asp-net-api","asp-net-application","asp-net-core","asp-net-core-api","asp-net-github-action","automation-pipeline","deployment","docker","dockerfile","github-actions","jenkins-pipeline","react","react-typescript","reactts","typescript"],"latest_commit_sha":null,"homepage":"https://tasker-aladawy.netlify.app","language":"TypeScript","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/moheladwy.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-09-18T04:06:41.000Z","updated_at":"2025-01-23T10:49:58.000Z","dependencies_parsed_at":"2025-05-06T20:34:04.847Z","dependency_job_id":"ffbcea5a-5913-40f3-8581-770028925d90","html_url":"https://github.com/moheladwy/TodoFullstack","commit_stats":null,"previous_names":["moheladwy/todofullstack"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/moheladwy/TodoFullstack","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/moheladwy%2FTodoFullstack","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/moheladwy%2FTodoFullstack/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/moheladwy%2FTodoFullstack/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/moheladwy%2FTodoFullstack/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/moheladwy","download_url":"https://codeload.github.com/moheladwy/TodoFullstack/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/moheladwy%2FTodoFullstack/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28682283,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-23T05:48:07.525Z","status":"ssl_error","status_checked_at":"2026-01-23T05:48:07.129Z","response_time":59,"last_error":"SSL_read: 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":["api-deployment","asp-api","asp-api-dockerfile","asp-api-pipeline","asp-net-api","asp-net-application","asp-net-core","asp-net-core-api","asp-net-github-action","automation-pipeline","deployment","docker","dockerfile","github-actions","jenkins-pipeline","react","react-typescript","reactts","typescript"],"created_at":"2024-10-24T18:06:20.657Z","updated_at":"2026-01-23T07:05:07.934Z","avatar_url":"https://github.com/moheladwy.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# TodoFullstack\n\nTodo Fullstack is a comprehensive task management application that showcases the integration between ASP.NET Core 8 Web API and React (Typescript). The application allows users to create, update, and delete task lists and tasks with priorities. It also supports user authentication and authorization with JWT tokens and refresh tokens.\n\n## Motivation\n\nAs a software developer passionate about full-stack development, I created this project to strengthen my expertise in:\n\n-   Building production-grade REST APIs with ASP.NET Core 8.0\n-   Implementing secure authentication and authorization\n-   Developing modern frontend applications with React and TypeScript\n-   Working with databases, caching, and containerization\n-   Following industry best practices and design patterns\n-   Writing clean, maintainable, and testable code\n\nThis project serves as a practical demonstration of integrating multiple modern technologies while adhering to software engineering principles.\n\n## Technologies\n\n### Backend\n\n-   ASP.NET Core 8.0\n-   Entity Framework Core with SQLite\n-   Redis for caching\n-   JWT Authentication\n-   Swagger API documentation\n-   Docker containerization\n\n### Frontend\n\n-   React 18\n-   TypeScript\n-   Vite\n-   Bootstrap 5\n-   Axios for API communication\n\n## Features\n\n-   User authentication (register, login, logout)\n-   JWT token management with refresh tokens\n-   Task lists management (CRUD operations)\n-   Tasks management with priorities (CRUD operations)\n-   Responsive design\n-   Real-time task status updates\n-   Caching for improved performance\n\n## Prerequisites\n\n-   Docker and Docker Compose\n-   Node.js 20+ (for local development)\n-   .NET 8.0 SDK (for local development)\n\n## Installation\n\n1. Clone the repository:\n\n    ```sh\n    git clone https://github.com/moheladwy/TodoFullstack.git\n    cd TodoFullstack\n    ```\n\n2. Development (local) Setup:\n\n    For Backend:\n\n    ```sh\n    cd server\n    dotnet restore\n    dotnet build\n    dotnet run --launch-profile https --project Todo.Api/Todo.Api.csproj\n    ```\n\n    For Frontend:\n\n    ```sh\n    cd client\n    npm install\n    npm run dev\n    ```\n\n3. Docker Setup (Production):\n    ```sh\n    docker-compose -f docker-compose.yml up -d\n    ```\n\n## Environment Variables\n\n### Backend (appsettings.json)\n\n```json\n{\n\t\"ConnectionStrings\": {\n\t\t\"SqliteConnection\": \"Data Source=Database/todo.db\",\n\t\t\"RedisConnection\": \"localhost:6379\"\n\t},\n\t\"JwtConfigurations\": {\n\t\t\"SecretKey\": \"your-secret-key\",\n\t\t\"Issuer\": \"Todo.Api\",\n\t\t\"Audience\": \"http://localhost:5076\",\n\t\t\"AccessTokenExpirationDays\": 30,\n\t\t\"RefreshTokenExpirationDays\": 90\n\t}\n}\n```\n\n### Frontend (.env)\n\n```\nVITE_SERVER_URL=http://localhost:8070/api\nVITE_SERVER_LOGIN_PATH=Auth/login\nVITE_SERVER_REGISTER_PATH=Auth/register\nVITE_SERVER_REFRESH_PATH=Auth/refresh\nVITE_SERVER_LOGOUT_PATH=Auth/logout\n```\n\n## API Documentation\n\nWhen running, access the Swagger documentation at:\n\n-   Development: `http://localhost:5076/swagger`\n-   Production: `http://localhost:8070/swagger`\n\n## Project Structure\n\n```\n├── client/                   # React frontend\n│   ├── src/\n│   │   ├── API/              # API integration\n│   │   ├── Authentication/   # Auth components\n│   │   ├── Dashboard/        # Main app components\n│   │   └── Navbar/           # Navigation components\n│   └── ...\n├── server/                   # ASP.NET Core backend\n│   ├── Todo.Api/             # API endpoints\n│   ├── Todo.Core/            # Domain models\n│   ├── Todo.Infrastructure/  # Data access \u0026 services\n│   └── Todo.UnitTests/       # Unit tests\n├── docker-compose.yml\n└── README.md\n```\n\n## Development\n\n1. API Development:\n\n-   Use Visual Studio or VS Code\n-   Run `dotnet watch` in the Todo.Api directory\n-   Access the API at `http://localhost:5076`\n\n2. Frontend Development:\n\n-   Use VS Code\n-   Run `npm run dev` in the client directory\n-   Access the app at `http://localhost:5173`\n\n## Deployment\n\nDeploy the application:\n\n```sh\ndocker-compose -f docker-compose.yml up --build -d\n```\n\nThe application will be available at:\n\n-   Frontend: `http://localhost:80`\n-   Backend API: `http://localhost:8070`\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE](/LICENSE) for details.\n\n## Author\n\nCreated by Mohamed Al-Adawy\n\n-   [Portfolio](https://al-adawy.netlify.app)\n-   [LinkedIn](https://www.linkedin.com/in/mohamed-al-adawy)\n-   [Email](mailto:mohamed.h.eladwy@gmail.com)\n\n## Contributing\n\n1. Fork the repository\n2. Create a feature branch\n3. Commit your changes\n4. Push to the branch\n5. Create a Pull Request\n\n## Support\n\nFor support, contact the author or open an issue on GitHub.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmoheladwy%2Ftodofullstack","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmoheladwy%2Ftodofullstack","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmoheladwy%2Ftodofullstack/lists"}