sábado, 3 de octubre de 2026

[FastAPI + Jinja2] Fenix Notes

Fenix Notes es una aplicación de notas ligeras, cifradas y organizadas por espacios de trabajo, pensada para guardar ideas y recordatorios de forma simple, rápida y 100% offline. Está construida con FastAPI y Uvicorn en el backend, plantillas Jinja2 e interactividad en el frontend con Alpine.js. Los datos viven en una base SQLite en memoria, que se serializa y se cifra con cryptography (AES-256-GCM + Scrypt), mientras que las sesiones se gestionan con cookies firmadas mediante itsdangerous.

## Funcionalidades principales

### Gestión de workspaces


- Espacios independientes: Creación, edición y eliminación de áreas de notas separadas (por ejemplo "Trabajo" y "Personal").

- Búsqueda rápida: Filtrado de workspaces por nombre desde el selector integrado.

- Organización dinámica: Reordenamiento de workspaces mediante Drag & Drop, con guardado automático al soltar.

### Notas

- Creación ágil: Campo de escritura fijo en la parte inferior con atajo Ctrl + Enter para enviar.

- Edición completa: Editor a pantalla completa para modificar el contenido, con confirmación antes de eliminar.

- Historial por fechas: Notas agrupadas por día, con carga progresiva al hacer scroll y botones para ir rápidamente arriba o abajo.

- Búsqueda avanzada: Filtros por texto, rangos predefinidos (hoy, ayer, esta semana, este mes), año o rango de fechas personalizado.

### Seguridad y experiencia de uso

- Cifrado en reposo: Toda la base de datos se cifra con AES-256-GCM. La clave se deriva de la contraseña maestra mediante Scrypt.

- Escritura atómica: Los cambios se guardan de forma segura en un archivo cifrado (data/notas.enc), evitando corrupción de datos.

- Bloqueo automático por inactividad: Tras 20 minutos sin actividad, la sesión expira y el vault se bloquea (se libera la clave y la base en memoria). El vault vive solo en memoria, por lo que al reiniciar el servidor es necesario volver a ingresar la contraseña maestra.

- Protección contra fuerza bruta: Tras 5 intentos fallidos desde la misma IP, el acceso se bloquea durante 5 minutos.

- Acceso concurrente seguro: Las operaciones sobre la base de datos están sincronizadas mediante un lock. Debe ejecutarse con un único worker.

- Tema claro / oscuro: Alternancia de tema con preferencia guardada en el navegador.

## Capturas de pantalla

A continuación, se muestran algunas imágenes de la aplicación en funcionamiento:





### Instalación del proyecto

 
1. Clonar el repositorio

git clone https://github.com/IsmaelHeredia/fenix-notes-fastapi-jinja2.git
cd fenix-notes-fastapi-jinja2 

2. Crear y activar un entorno virtual

python -m venv venv
source venv/bin/activate


En Windows:

venv\Scripts\activate


3. Instalación de dependencias

pip install -r requirements.txt


4. Ejecución del proyecto en modo desarrollo

uvicorn main:app --reload
 

5. Ejecución en producción

uvicorn main:app --host 127.0.0.1 --port 8000

Una vez que el servicio esté activo, se podrá acceder desde la siguiente URL:

http://localhost:8000


6. Configuración del sistema

Al ingresar por primera vez, la aplicación solicitará crear una **contraseña maestra** (mínimo 12 caracteres). Esta contraseña se usa para cifrar todas las notas y **no existe forma de recuperarla** si se olvida.

Las notas se almacenan cifradas en:

data/notas.enc

 

Link del proyecto

No hay comentarios:

Publicar un comentario

[FastAPI + Jinja2] Fenix Notes

Fenix Notes es una aplicación de notas ligeras, cifradas y organizadas por espacios de trabajo, pensada para guardar ideas y recordatorios ...