https://github.com/efedeveloper/rick-morty-app
Angular app to list, search and explore Rick and Morty characters via REST and GraphQL.
https://github.com/efedeveloper/rick-morty-app
angular angular-material angular-signals graphql ngrx rest-api rick-and-morty rxjs typescript
Last synced: about 2 months ago
JSON representation
Angular app to list, search and explore Rick and Morty characters via REST and GraphQL.
- Host: GitHub
- URL: https://github.com/efedeveloper/rick-morty-app
- Owner: EfeDeveloper
- Created: 2025-06-18T17:17:06.000Z (12 months ago)
- Default Branch: main
- Last Pushed: 2025-06-19T07:21:35.000Z (12 months ago)
- Last Synced: 2025-06-19T08:32:54.072Z (12 months ago)
- Topics: angular, angular-material, angular-signals, graphql, ngrx, rest-api, rick-and-morty, rxjs, typescript
- Language: TypeScript
- Homepage: https://rick-and-morty-app-angular.netlify.app/
- Size: 183 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# π§βπ» Rick & Morty App β Modern Character Management SPA
Advanced character management and exploration SPA built with **Angular 19 + Tailwind CSS + NgRx + Apollo Client**, following principles of scalable architecture, maintainable code, and high-quality UX.
## ποΈ Table of Contents
- [Project Overview](#project-overview)
- [Tech Stack](#tech-stack)
- [Architecture & Technical Decisions](#architecture--technical-decisions)
- [Installation & Setup](#installation--setup)
- [Project Structure](#project-structure)
- [Best Practices & Conventions](#best-practices--conventions)
- [Contributing](#contributing)
- [License](#license)
## Project Overview
**Rick & Morty App** is a modular, maintainable, and scalable Single Page Application focused on consuming the Rick & Morty GraphQL API. It enables advanced character search, favorites management, filtering by species/status, and notificationsβall with a strong UX focus.
## Tech Stack
- **Angular 19** π
°οΈ β Robust framework for building SPAs.
- **TypeScript** π΅ β Static typing for clarity and robustness.
- **NgRx** π£ β Advanced state management (store, effects, entity).
- **Apollo Client** π β Efficient GraphQL API integration.
- **Angular Material** π¨ β Modern Material Design UI components.
- **Tailwind CSS** π β Utility-first CSS framework for fast, consistent styling.
- **RxJS** π β Reactive programming and advanced async flows.
- **Jasmine/Karma** π§ͺ β Unit and integration testing.
- **ESLint + Prettier** π§Ή β Linting and automatic formatting.
## Architecture & Technical Decisions
- **Modular structure**: clear separation by feature in `/app`, with decoupled modules, services, and components.
- **State management**: centralized and scalable app state with NgRx Store and Effects.
- **GraphQL integration**: Apollo Client for efficient queries and mutations against the Rick & Morty API.
- **UI/UX**: Angular Material for consistent, responsive UI; Tailwind CSS for rapid utility-first styling.
- **Quality**: complete testing stack (Jasmine/Karma) and automated linting/formatting on every build.
- **Motivation**: Chosen stack and structure streamline team collaboration, scalability, and maintainability.
## Installation & Setup
Make sure you have **Node.js 20.x** installed.
```bash
git clone https://github.com/EfeDeveloper/rick-morty-app.git
cd rick-morty-app
npm install
# Start local development server
npm start
# or
ng serve
# App runs on http://localhost:4200
# Run unit tests
npm test
```
## Project Structure
```bash
rick-morty-app/
βββ src/
β βββ app/
β β βββ app.component.ts # Root Angular component
β β βββ app.component.html
β β βββ app.config.ts # Angular providers and configuration
β β βββ app.routes.ts # App routing
β β βββ core/ # Core services, constants, GraphQL queries
β β β βββ constants/
β β β βββ graphql/
β β β βββ services/
β β βββ features/ # Feature modules and UI (filters, favorites, characters, totals)
β β β βββ characters/
β β β βββ favorite-bar/
β β β βββ filters-bar/
β β β βββ totals-bar/
β β βββ models/ # TypeScript interfaces and models
β β βββ shared/ # Shared components and pipes
β β β βββ components/
β β β βββ pipes/
β β βββ store/ # NgRx store, reducers, actions
β β βββ favorite/
β βββ environments/ # Environment configs (dev/prod)
β βββ index.html # App entry HTML
β βββ main.ts # App bootstrap
β βββ styles.css # Global styles (Tailwind)
βββ public/ # Static assets (favicon, etc.)
βββ .vscode/ # VSCode workspace settings and tasks
βββ .angular/ # Angular CLI cache
βββ angular.json # Angular CLI configuration
βββ package.json # Dependencies and scripts
βββ tailwind.config.js # Tailwind CSS configuration
βββ tsconfig.json # TypeScript configuration
βββ tsconfig.app.json
βββ tsconfig.spec.json
βββ .editorconfig # EditorConfig rules
βββ .gitignore # Git ignore rules
βββ LICENSE # Project license
βββ README.md # Project documentation
```
## Best Practices & Conventions
- Semantic commit messages with emojis for clarity.
- Functional, decoupled, and testable components.
- Strict TypeScript typing.
- Centralized and utility-first styling with Tailwind.
- Centralized error handling and user feedback.
- Automatic linting & formatting on every commit/CI.
## Contributing
1. Fork the repo and create a descriptive branch (e.g., feature/add-search).
2. Write code, tests, and make sure lint passes.
3. Create a clear Pull Request explaining your changes.
All contributions are welcome! π
## License
[MIT](LICENSE)