A modern, full-featured recipe management application built with Angular 16, featuring authentication, state management with NgRx, and Firebase integration.
- User Registration & Login: Secure authentication using Firebase Authentication
- Token Management: Automatic token refresh and expiration handling
- Route Protection: Guarded routes requiring authentication
- Auto-login: Persistent user sessions with localStorage
- CRUD Operations: Create, read, update, and delete recipes
- Recipe Details: View comprehensive recipe information with images
- Ingredient Management: Add, edit, and manage recipe ingredients
- Image Support: Recipe images with URL-based storage
- Dynamic Shopping List: Add ingredients from recipes to shopping list
- State Management: NgRx-powered shopping list with real-time updates
- Edit & Delete: Modify shopping list items with inline editing
- Bulk Operations: Add multiple ingredients at once
- NgRx Store: Centralized state management for authentication and shopping list
- NgRx Effects: Side effect handling for authentication flows
- Lazy Loading: Feature modules loaded on-demand for better performance
- Reactive Forms: Form validation and user input handling
- HTTP Interceptors: Automatic token injection for API requests
- Route Resolvers: Data pre-loading for better UX
- Responsive Design: Bootstrap-based responsive layout
- Firebase Integration: Real-time database for recipe storage
- Error Handling: Comprehensive error management and user feedback
- Node.js (v16 or higher)
- Angular CLI (
npm install -g @angular/cli) - Firebase account for backend services
-
Clone the repository
git clone <your-repo-url> cd Angular_Project
-
Install dependencies
npm install
-
Configure Firebase
- Create a Firebase project
- Enable Authentication and Realtime Database
- Update
src/environments/environment.tswith your Firebase API key:
export const environment = { production: false, firebaseAPIKey: 'your-firebase-api-key' };
-
Run the application
ng serve
Navigate to
http://localhost:4200/
src/app/
βββ auth/ # Authentication module
β βββ store/ # NgRx auth state management
β βββ auth.component.* # Login/signup forms
β βββ auth.service.ts # Firebase auth service
β βββ auth.guard.ts # Route protection
βββ recipes/ # Recipe management module
β βββ recipe-detail/ # Recipe viewing component
β βββ recipe-edit/ # Recipe creation/editing
β βββ recipe-list/ # Recipe listing
β βββ recipe.service.ts # Recipe business logic
β βββ recipe.model.ts # Recipe data model
βββ shopping-list/ # Shopping list module
β βββ store/ # NgRx shopping list state
β βββ shopping-edit/ # Shopping list editing
β βββ shopping-list.service.ts
βββ shared/ # Shared components & services
β βββ alert/ # Alert component
β βββ loading-spinner/ # Loading indicator
β βββ dropdown.directive.ts
β βββ data-storage.service.ts
βββ store/ # Root NgRx store configuration
- Angular 16 - Frontend framework
- TypeScript - Programming language
- NgRx - State management
- Firebase - Backend services
- Bootstrap 3 - CSS framework
- RxJS - Reactive programming
# Development server
npm start
ng serve
# Build for production
npm run build
ng build --configuration production
# Run tests
npm test
ng test
# Watch mode
npm run watch
ng build --watch --configuration development# Generate components
ng generate component component-name
# Generate services
ng generate service service-name
# Generate modules
ng generate module module-name-
Build the application
npm run build
-
Deploy to Firebase
firebase deploy
The application is configured for Firebase hosting with the build output in dist/todos-app/.
- User registration and login with email/password
- Automatic token management and refresh
- Protected routes requiring authentication
- Persistent sessions across browser sessions
- Create new recipes with images and descriptions
- Edit existing recipes with form validation
- Delete recipes with confirmation
- View detailed recipe information
- Add recipe ingredients to shopping list
- Edit shopping list items inline
- Delete items from shopping list
- Real-time state updates with NgRx
- Fork the project
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Angular team for the excellent framework
- NgRx team for state management solutions
- Firebase for backend services
- Bootstrap for responsive design components
Note: This application was generated with Angular CLI version 15.0.4 and has been upgraded to Angular 16.