Sistema web para cotizar y estimar proyectos de software usando una version simplificada del modelo COCOMO. Permite cargar los datos principales de un proyecto, calcular esfuerzo, duracion, equipo sugerido y costo estimado, y guardar cada cotizacion en PostgreSQL.
- Alta de cotizaciones de proyectos.
- Calculo de esfuerzo en persona-mes.
- Estimacion de duracion del proyecto.
- Sugerencia de tamano de equipo.
- Calculo de costo base, reserva de riesgo y costo total.
- Historial de cotizaciones guardadas.
- Detalle completo de cada estimacion.
- Creacion automatica de la base de datos y tabla si no existen.
- .NET 10
- ASP.NET Core MVC
- PostgreSQL
- Npgsql
- Bootstrap
- Razor Views
- .NET SDK 10 o superior.
- PostgreSQL local, Neon o una instancia PostgreSQL disponible.
- Visual Studio, Visual Studio Code o cualquier editor compatible con .NET.
La cadena de conexion se encuentra en appsettings.json:
"ConnectionStrings": {
"DefaultConnection": "Host=localhost;Port=5432;Database=cotizador_proyectos;Username=postgres;Password=postgres;SSL Mode=Disable"
}Por defecto espera PostgreSQL local y la base cotizador_proyectos.
Si queres usar Neon o Render, configura la variable de entorno ConnectionStrings__DefaultConnection en el panel del hosting. Ejemplo:
Host=ep-xxxx.us-east-2.aws.neon.tech;Database=neondb;Username=neondb_owner;Password=TU_PASSWORD;SSL Mode=Require;Trust Server Certificate=true
La aplicacion crea automaticamente la tabla project_estimates al iniciar. La base de datos debe existir previamente, por ejemplo creada desde Neon.
Tambien se incluye un script manual en:
Database/schema.sql
Desde la carpeta del proyecto:
dotnet restore
dotnet build
dotnet runLuego abrir en el navegador:
http://localhost:5298
Esta version esta preparada para desplegarse gratis usando:
- Render Free Web Service para hospedar la app.
- Neon Free Postgres para la base de datos.
- Dockerfile incluido en la raiz del proyecto.
Pasos:
- Crear una cuenta en Neon.
- Crear un proyecto PostgreSQL gratuito.
- Copiar la connection string de Neon en formato compatible con .NET/Npgsql.
- Crear una cuenta en Render.
- Crear un nuevo Web Service conectado a este repositorio de GitHub.
- En Render, seleccionar Docker como runtime.
- Agregar una variable de entorno:
ConnectionStrings__DefaultConnection=Host=...;Database=...;Username=...;Password=...;SSL Mode=Require;Trust Server Certificate=true
- Deploy.
Render publicara la app en una URL del estilo:
https://tu-app.onrender.com
En el plan gratuito, Render puede pausar la app cuando no recibe trafico por un rato. La primera visita despues de una pausa puede tardar mas de lo normal.
El sistema usa coeficientes COCOMO basicos segun el modo seleccionado:
| Modo | Uso sugerido |
|---|---|
| Organico | Proyectos simples o conocidos |
| SemiAcoplado | Proyectos de complejidad media |
| Empotrado | Proyectos complejos, con restricciones fuertes |
El calculo considera:
- Lineas de codigo estimadas.
- Modo COCOMO.
- Multiplicador de complejidad.
- Tarifa por hora.
- Horas mensuales por persona.
- Porcentaje de reserva de riesgo.
CotizadorProyectos/
+-- Controllers/
| +-- EstimacionesController.cs
+-- Data/
| +-- IProjectEstimateRepository.cs
| +-- SqlProjectEstimateRepository.cs
+-- Database/
| +-- schema.sql
+-- Models/
| +-- CocomoMode.cs
| +-- ProjectEstimate.cs
| +-- ProjectEstimateForm.cs
+-- Services/
| +-- CocomoCalculator.cs
| +-- ICocomoCalculator.cs
+-- Views/
| +-- Estimaciones/
+-- wwwroot/
+-- Program.cs
+-- appsettings.json
Antes de publicar el repositorio, conviene excluir archivos generados localmente:
bin/
obj/
*.log
.vs/
.dotnet/
.nuget/Proyecto desarrollado como sistema de cotizacion y estimacion de proyectos con ASP.NET Core y PostgreSQL.