Skip to content
Jorgeotero1998Public

About

🏪 Business Management System for PyMEs —

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Negocio

Simple management for any business. / GestiĂłn simple para cualquier negocio.

Full-stack web system for SMBs and retail: products, stock, customers, POS, daily cash register, reports, and role-based users. Not a landing page — a usable end-to-end tool.

Sistema web completo para PyMEs y comercios: productos, stock, clientes, punto de venta, caja del día, reportes y usuarios con roles. No es un landing — es una herramienta usable de punta a punta.

Repository: github.com/Jorgeotero1998/Negociov2


English

Why it exists

Small businesses need something practical: sell fast, control stock, close the cash register, and see what moved. Negocio covers that daily flow without ERP complexity.

Stack

Layer Technology
Backend Java 21 · Spring Boot 3.4 · Spring Security · Spring Data JPA · Validation
UI Thymeleaf · custom CSS · lightweight JS (POS)
Database PostgreSQL 16 (prod/docker) · optional H2 for local trials
Packaging Maven · Docker · Docker Compose
Security BCrypt · roles OWNER / EMPLOYEE · CSRF on forms

Run (recommended)

Requirements: Docker Desktop with Compose

git clone https://github.com/Jorgeotero1998/Negociov2.git
cd Negociov2
docker compose up --build

Open http://localhost:8080

First run builds the app, starts Postgres, and seeds demo data.

Note: Postgres is exposed on the host as localhost:5433 (to avoid clashing with a local Postgres on 5432). Inside Compose the app still uses db:5432.

Stop

docker compose down

Also wipe database volumes:

docker compose down -v

Demo users

User Password Role
dueno dueno123 Owner (OWNER)
empleado empleado123 Employee (EMPLOYEE)

If the database is empty, you can also register the first owner at /register.

Main flows (portfolio demo)

  1. Login → dashboard with today’s sales, tickets, and low-stock alerts
  2. New sale (POS) → search by name/SKU, quantity, Enter to add, choose payment, charge. Blocks overselling and warns on low stock
  3. Ticket → detail + printable view · “Next customer”
  4. Products → CRUD, stock ±1, alert threshold
  5. Customers → optional directory linked to sales
  6. Cash register → open with float, movements by payment method, expected cash, close the day
  7. Reports → date range, top products, sales list, low stock
  8. Users (owner only) → create employees/owners, activate/deactivate

Run without full Docker (local app)

Needs Java 21 and Maven 3.9+.

Option A — Postgres in Docker only

docker compose up db -d
mvn spring-boot:run

Uses profile dev (Postgres on localhost:5432, user/pass negocio/negocio — adjust if your Compose maps 5433).

Option B — embedded H2 (fast)

mvn spring-boot:run -Dspring-boot.run.profiles=h2

Tests

mvn test

Covers core sales + stock and cash register logic.

Environment variables (deploy)

Variable Description Example
SPRING_PROFILES_ACTIVE Profile prod or docker
SPRING_DATASOURCE_URL JDBC Postgres jdbc:postgresql://host:5432/negocio
SPRING_DATASOURCE_USERNAME DB user negocio
SPRING_DATASOURCE_PASSWORD DB password (secret)
PORT HTTP port 8080
NEGOCIO_SEED Seed demo data true / false

In production, set NEGOCIO_SEED=false after the first boot (or once users already exist).

Deploy

  1. Create a PostgreSQL service and copy the URL
  2. Deploy this repo (Dockerfile ready)
  3. Set:
    • SPRING_PROFILES_ACTIVE=prod
    • SPRING_DATASOURCE_URL / USERNAME / PASSWORD
    • NEGOCIO_SEED=true only on first deploy if you want demo data
  4. Expose port 8080 (or whatever the platform sets via PORT)

Works on Railway, Render, Fly.io, and similar platforms.

Code structure

com.negocio
├── config        # Security, seeder
├── domain        # Entities and enums
├── repo          # Spring Data JPA
├── security      # UserDetailsService
├── service       # Business rules + transactions
└── web           # Controllers, DTOs, advice

Sales are transactional: require an open register, decrement stock, and record a cash movement in one operation.

Visual identity

  • Fonts: Fraunces (brand) + DM Sans (UI)
  • Palette: ink/charcoal + teal accent
  • Strong login brand; dashboard with quick actions
  • POS: work screen — code search, large ticket, payment buttons, cash change, F2 shortcut
  • Principle: easy to use on the outside, serious business rules underneath

Portfolio blurb

Negocio — SMB management system in Java (Spring Boot). Includes POS/cash register, stock, customers, reports, and roles. Simple UX, complete logic (atomic sales, stock control, open/close cash).

License

Portfolio / demo / learning project — free to use for those purposes.


Español

¿Por qué existe?

Muchos negocios chicos necesitan algo práctico: vender rápido, controlar stock, cerrar caja y ver qué se movió. Negocio cubre ese flujo diario sin complejidad de ERP.

Stack

Capa TecnologĂ­a
Backend Java 21 · Spring Boot 3.4 · Spring Security · Spring Data JPA · Validation
UI Thymeleaf · CSS propio · JS ligero (POS)
Base de datos PostgreSQL 16 (prod/docker) · H2 opcional para pruebas locales
Empaquetado Maven · Docker · Docker Compose
Seguridad BCrypt · roles OWNER / EMPLOYEE · CSRF en formularios

CĂłmo correr (recomendado)

Requisitos: Docker Desktop con Compose

git clone https://github.com/Jorgeotero1998/Negociov2.git
cd Negociov2
docker compose up --build

AbrĂ­ http://localhost:8080

La primera vez compila la app, levanta Postgres y siembra datos demo.

Nota: Postgres queda expuesto en el host como localhost:5433 (para no chocar con un Postgres local en 5432). Dentro de Compose la app sigue usando db:5432.

Detener

docker compose down

Para borrar también los datos de la base:

docker compose down -v

Usuarios demo

Usuario Contraseña Rol
dueno dueno123 Dueño (OWNER)
empleado empleado123 Empleado (EMPLOYEE)

Si la base está vacía y no hay dueño, también podés registrar el primer dueño en /register.

Flujos principales (para mostrar en portfolio)

  1. Login → dashboard con ventas del día, tickets y alertas de stock
  2. Nueva venta (POS) → buscar por nombre/SKU, cantidad, Enter para agregar, elegir pago, cobrar. Bloquea sobreventa y avisa stock bajo
  3. Ticket → detalle + vista imprimible · “Siguiente cliente”
  4. Productos → CRUD, ajuste de stock ±1, umbral de alerta
  5. Clientes → agenda opcional asociada a ventas
  6. Caja → abrir con fondo, ver movimientos por método de pago, efectivo esperado, cerrar el día
  7. Reportes → rango de fechas, top productos, listado de ventas, stock bajo
  8. Usuarios (solo dueño) → crear empleados / dueños y activar/desactivar

Correr sin Docker completo (app local)

Necesitás Java 21 y Maven 3.9+.

Opción A — solo Postgres en Docker

docker compose up db -d
mvn spring-boot:run

Usa el perfil dev (Postgres en localhost:5432, user/pass negocio/negocio — ajustá si Compose mapea 5433).

Opción B — H2 embebido (rápido)

mvn spring-boot:run -Dspring-boot.run.profiles=h2

Tests

mvn test

Incluye tests del nĂşcleo de ventas + stock y caja.

Variables de entorno (deploy)

Variable DescripciĂłn Ejemplo
SPRING_PROFILES_ACTIVE Perfil prod o docker
SPRING_DATASOURCE_URL JDBC Postgres jdbc:postgresql://host:5432/negocio
SPRING_DATASOURCE_USERNAME Usuario DB negocio
SPRING_DATASOURCE_PASSWORD Password DB (secreto)
PORT Puerto HTTP 8080
NEGOCIO_SEED Sembrar demo true / false

En producción conviene NEGOCIO_SEED=false después del primer arranque (o cuando ya existan usuarios).

Deploy

  1. Crear un servicio PostgreSQL y copiar la URL
  2. Desplegar la app desde este repo (Dockerfile listo)
  3. Configurar:
    • SPRING_PROFILES_ACTIVE=prod
    • SPRING_DATASOURCE_URL / USERNAME / PASSWORD
    • NEGOCIO_SEED=true solo en el primer deploy si querĂ©s datos demo
  4. Exponer el puerto 8080 (o el que asigne la plataforma vĂ­a PORT)

Sirve para Railway, Render, Fly.io y plataformas similares.

Estructura del cĂłdigo

com.negocio
├── config        # Security, seeder
├── domain        # Entidades y enums
├── repo          # Spring Data JPA
├── security      # UserDetailsService
├── service       # Reglas de negocio + transacciones
└── web           # Controllers, DTOs, advice

Las ventas son transaccionales: validan caja abierta, descuentan stock y registran movimiento de caja en la misma operaciĂłn.

Identidad visual

  • TipografĂ­as: Fraunces (marca) + DM Sans (UI)
  • Paleta: tinta/carbĂłn + acento teal
  • Login con marca fuerte; dashboard con accesos rápidos
  • Caja (POS): pantalla de trabajo — bĂşsqueda por cĂłdigo, ticket grande, botones de pago, vuelto en efectivo, atajo F2
  • Principio: fácil de manejar por fuera, reglas de negocio serias por dentro

Texto para portfolio

Negocio — Sistema de gestión para PyMEs en Java (Spring Boot). Incluye POS/caja, stock, clientes, reportes y roles. UX simple, lógica completa (ventas atómicas, control de stock, apertura/cierre de caja).

Licencia

Proyecto de portfolio / uso libre para demos y aprendizaje.

About

🏪 Business Management System for PyMEs —

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages