A full-featured Task Manager web application built with Angular, TypeScript, and Firebase, designed to manage tasks with CRUD functionality, authentication, and real-time updates.
- Project Overview
- Features
- Tech Stack
- Project Structure
- Installation
- Usage
- Authentication
- Task Management
- Deployment
- CI/CD Integration
- Contributing
- License
This Angular Task List app allows users to:
- Sign up and log in with email.
- Create, read, update, and delete tasks.
- Track the status of each task (completed/pending).
- Receive real-time updates using BehaviorSubject for state management.
- View a responsive UI built with Angular Material components.
- Authentication: Simple login and registration using Firebase backend.
- Task CRUD Operations: Full management of tasks (create, edit, delete).
- State Management: BehaviorSubject to keep task list reactive.
- Responsive UI: Built with Angular Material and responsive CSS.
- Notifications: Feedback dialogs for successful operations.
- Spinner Component: Reusable loading indicator during async operations.
- Routing Guards: AuthGuard ensures protected routes are only accessible by logged-in users.
- Frontend: Angular 20+, TypeScript
- UI Library: Angular Material
- Backend: Firebase Functions (optional)
- Hosting: Firebase Hosting
- State Management: RxJS BehaviorSubject
task-list/
│
├── frontend/                  # Angular frontend project
│   ├── src/                   # Source code
│   │   ├── app/
│   │   │   ├── _services/     # API and state services
│   │   │   ├── _helpers/      # Spinner and modals
│   │   │   ├── _modals/       # Dialog components
│   │   │   ├── auth/          # Authentication pages
│   │   │   └── task/          # Task management pages
│   │   └── assets/            # Static assets
│   ├── angular.json           # Angular workspace configuration
│   ├── package.json           # Project dependencies
│   └── firebase.json          # Firebase Hosting config
│
├── functions/                 # Optional Firebase functions
├── .github/workflows/         # CI/CD workflow files
└── README.md                  # Project documentation
- Clone the repository:
git clone https://github.com/<your-username>/task-list.git
cd task-list/frontend- Install dependencies:
npm install- Set up environment variables:
Edit src/environments/environment.tsto point to your backend URL:
export const environment = {
  production: false,
  backendURL: 'https://your-backend-url.com'
};- Start the development server:
ng serve- Access the app:
Open http://localhost:4200 in your browser.
- Build for production:
ng build --configuration production- Serve the production build locally (optional):
npx http-server dist/task-list- Users can register and log in using email.
- AuthGuard ensures protected routes are only accessible for authenticated users.
- Session is stored in localStorage(email token).
- Add Task: Create new tasks with title and description.
- Edit Task: Modify task details or status.
- Delete Task: Remove tasks permanently.
- Toggle Status: Mark tasks as complete or pending.
- Reactive List: Task list updates automatically without page refresh.
This project is hosted on Firebase Hosting:
- Build the project:
ng build --configuration production- Deploy:
firebase deploy --only hostingEnsure
firebase.jsonpoints to the correctpublicfolder:
{
  "hosting": {
    "public": "dist/task-list",
    "ignore": ["firebase.json", "**/.*", "**/node_modules/**"],
    "rewrites": [{ "source": "**", "destination": "/index.html" }]
  }
}- 
The project includes a GitHub Actions workflow ( deploy.yml) for automated build and deployment.
- 
Every push to the mainbranch triggers:- Checkout repository
- Install dependencies
- Build Angular project
- Deploy to Firebase Hosting
 
- Fork the repository
- Create a feature branch (git checkout -b feature/my-feature)
- Commit your changes (git commit -m "Add feature")
- Push to the branch (git push origin feature/my-feature)
- Create a Pull Request
This project is licensed under the MIT License.