An open API service indexing awesome lists of open source software.

https://github.com/uspiri/user-posts

đź’Ľ Users&Posts | An authentication role based app with Angular 18
https://github.com/uspiri/user-posts

angular tailwindcss

Last synced: 3 months ago
JSON representation

đź’Ľ Users&Posts | An authentication role based app with Angular 18

Awesome Lists containing this project

README

          

# đź’Ľ Users&Posts


angular-logo


AplicaciĂłn web con Angular 18 que implementa un sistema de autenticaciĂłn con roles y el CRUD de posteos.

TypeScript - Tailwing - Signals





•

•

•

•

•

## About Users&Posts

Este proyecto es generado con [Angular CLI](https://github.com/angular/angular-cli) version 18.2.4 como aplicaciĂłn standalone. Implementa un sistema de autenticaciĂłn basado en roles. Estos roles pueden ser 'user' o 'admin'. Dependiendo del rol, tienen acceso a diferentes funcionalidades, como la visualizaciĂłn, creaciĂłn o ediciĂłn de datos obtenidos desde una API externa.

![24shots_so](https://github.com/user-attachments/assets/9df71aad-d5e1-4f65-bf5c-9430fcacad58)

> [!NOTE]
> Hay varios items a destacar, resultado de ser parte de un challange y no una aplicaciĂłn completa como tal:
> - Simulación de base de datos y llamados a API de usuarios: [Debajo añado las credenciales](#Usuarios-de-prueba) disponibles. En un entorno real, esta simulación no existiría.
> - JWT: Se toma como supuesto que se utiliza un BearerToken, se ha implementado un interceptor que inyecta en la cabecera de las peticiones este token si está disponible.
> - Testing: En algunos componentes como formularios, guards, etc.

## 🛠️ Tecnologías utilizadas

- [Angular](https://angular.dev/): Framework principal del proyecto, en su Ăşltima versiĂłn.
- [Tailwind](https://tailwindcss.com/): Framework css para añadir estilos.
- [CSS](https://developer.mozilla.org/es/docs/Web/CSS): Aplicación de css moderno con técnicas como [nesting](https://caniuse.com/css-nesting) o [field-sizing](https://caniuse.com/mdn-css_properties_field-sizing).
- [Lucide Icons](https://lucide.dev/): LibrerĂ­a de iconos.
- [Eslint](https://eslint.org/) y [Prettier](https://prettier.io/): Formato y calidad de cĂłdigo.

## 🚀 Features

- **Responsive Design**: Diseño minimalista, de fácil adaptación atractiva, accesible e intuitiva.



- **LazyLoading**: Cada página cuenta con su propia carga perezosa.
- **Standalone Components**: La aplicaciĂłn esta construida en su totalidad mediante [standalone components](https://angular.dev/guide/components/importing#standalone-components) reduciendo la necesidad de mĂłdulos.
- **[Signals](https://angular.dev/guide/signals)**
- **JWT Authentication** (simulada): Bearer Token con injector.
- **Role Guard & Auth Guard**: ProtecciĂłn de rutas.



- **Custom toasts**: Sistema personalizado de toasts (notificaciones).



- **CRUD de posts**:
- **GET**: Los usuarios "admin" y "user" pueden visualizar los datos obtenidos desde una API externa (por defecto, se utilizĂł https://jsonplaceholder.typicode.com/).
- **POST y PATCH: Solo el usuario "admin" puede crear y actualizar datos.**
- ComunicaciĂłn con API utilizando el servicio de Angular para realizar solicitudes HTTP



- **Filtro y paginaciĂłn**: Implementado mediante signals.








## Usuarios de prueba

- Usuario "admin":
```
Email: admin@test.com
Password: admin123
```

- Usuario "user":
```
Email: user@test.com
Password: user123
```

## Estructura de Carpetas
```bash
src/
├── app/
│ ├── features/ # Funcionalidades principales
│ │ ├── login/ # Autenticación
│ │ └── posts/ # Posts
│ │ │ ├── components/ # Componentes especificos
│ │ │ └── pages/ # Páginas/rutas/vistas
│ ├── shared/ # Elementos compartidos por todo el sistema
│ │ ├── components/
│ │ ├── guards/
│ │ ├── interceptors/
│ │ ├── layouts/ # Componentes que envuelven el sistema
│ │ ├── models/ # Interfaces y tipos
│ │ ├── services/
│ │ └── utils/ # Simula la API
│ └── app.routes.ts # Configuración de rutas protegidas con Lazy Loading
├── environments/ # Variables de entorno
├── index.html
├── main.ts # Bootstrap
└── styles.css # Estilos globales y configuración de Tailwind
```

## InstalaciĂłn y ejecuciĂłn

> [!WARNING]
> **Node verion**: 18.19.1 o mayor.

### Instalar dependencias

```
npm install
```

### Servidor local

```
ng serve
```
- Navegar a `http://localhost:4200/`

### Build

```
ng build
```
- Generará el bundle en la carpeta `dist/`

### Tests
```
ng test
```
- Realizado en los componentes más relevantes (Formularios, guards, etc.)