A modern, feature-rich financial management application built with ASP.NET Core MVC and MongoDB
๐ Features โข ๐ฅ Installation โข ๐๏ธ Architecture โข ๐ Documentation โข ๐ค Contributing
NestShare is a comprehensive personal financial management platform designed to help individuals and groups manage their finances effectively. Built with modern web technologies and following best practices, it provides a robust solution for budgeting, savings tracking, loan management, and collaborative financial planning through thrift groups.
- ๐ฆ Complete Financial Ecosystem: Manage budgets, savings, loans, and group finances in one place
- ๐ฅ Collaborative Finance: Thrift group functionality for community savings
- ๐ Smart Analytics: Advanced financial reporting and visualization
- ๐ Enterprise Security: ASP.NET Core Identity with role-based access control
- ๐ฑ Responsive Design: Modern, mobile-first UI with Bootstrap 5
- โก High Performance: MongoDB for scalable data management
- ๐ง Extensible Architecture: Clean, maintainable codebase following MVC patterns
๐ฏ Dashboard & Overview
- Financial Summary: Real-time overview of all financial metrics
- Recent Transactions: Quick access to latest financial activities
- Goal Progress: Visual tracking of savings and budget targets
- Quick Actions: Fast access to common operations
- Customizable Widgets: Personalized dashboard experience
๐ณ Budget Management
- Smart Budget Creation: AI-powered budget recommendations
- Category-based Budgeting: Organize expenses by custom categories
- Housing & Utilities
- Food & Dining
- Transportation
- Healthcare
- Entertainment
- Personal Care
- Debt Payments
- Budget Tracking: Real-time expense tracking against budgets
- Variance Analysis: Compare actual vs. planned spending
- Monthly/Annual Views: Flexible time period management
- Budget Templates: Reusable budget structures
๐ฏ Savings Goals & Management
- Goal Setting: Create SMART savings goals with target amounts and dates
- Progress Tracking: Visual progress indicators and milestone celebrations
- Automated Contributions: Set up recurring savings transfers
- Goal Categories: Organize goals by purpose (Emergency Fund, Vacation, etc.)
- Achievement Analytics: Track completion rates and time-to-goal metrics
- Savings Strategies: Built-in calculators for different saving approaches
๐ฆ Loan Management System
- Loan Portfolio: Comprehensive loan tracking and management
- Payment Scheduling: Automated payment reminders and tracking
- Amortization Calculations: Detailed payment breakdowns
- Interest Analysis: Track interest paid over time
- Early Payment Planning: Calculate benefits of extra payments
- Multiple Loan Types: Support for mortgages, personal loans, auto loans
- Payment History: Complete audit trail of all payments
๐ฅ Thrift Groups (Collaborative Finance)
- Group Creation: Start or join savings groups
- Member Management: Invite and manage group participants
- Contribution Tracking: Monitor member contributions and payouts
- Rotation Management: Automated payout scheduling
- Group Analytics: Financial health and participation metrics
- Communication Tools: In-app messaging and notifications
- Transparency: Full visibility into group financial activities
๐ค User Authentication & Authorization
- Secure Registration: Email verification and strong password policies
- Multi-factor Authentication: Enhanced security options
- Role-based Access Control: Granular permission management
- Session Management: Secure session handling with configurable timeouts
- Password Recovery: Secure password reset functionality
- Account Lockout: Protection against brute force attacks
๐ User Profiles & Settings
- Comprehensive Profiles: Personal and financial information management
- Notification Preferences: Customizable alert settings
- Privacy Controls: Data sharing and visibility settings
- Theme Customization: Personalized user interface
- Export/Import: Data portability and backup options
๐ Financial Analytics
- Spending Analysis: Detailed breakdown of expenses by category
- Income vs. Expense Tracking: Monthly and yearly comparisons
- Trend Analysis: Historical financial pattern recognition
- Goal Progress Reports: Savings and budget achievement metrics
- Cash Flow Statements: Comprehensive financial flow analysis
- Custom Reports: User-defined reporting periods and parameters
๐ Visualization Tools
- Interactive Charts: Dynamic financial data visualization
- Progress Bars: Visual goal and budget tracking
- Trend Lines: Historical performance indicators
- Comparison Charts: Period-over-period analysis
- Export Capabilities: PDF and Excel report generation
| ๐ฅ๏ธ Backend |
|
| ๐๏ธ Database |
|
| ๐จ Frontend |
|
| ๐ Authentication |
|
| ๐ง Services |
|
NestShare/
โโโ ๐ Controllers/ # MVC Controllers for handling HTTP requests
โ โโโ ๐ HomeController.cs # Landing page and general navigation
โ โโโ ๐ DashboardController.cs # Financial dashboard and overview
โ โโโ ๐ฐ BudgetController.cs # Budget creation and management
โ โโโ ๐ฏ SavingsController.cs # Savings goals and tracking
โ โโโ ๐ฆ LoanController.cs # Loan management and calculations
โ โโโ ๐ฅ ThriftGroupController.cs # Group savings functionality
โ โโโ ๐ ReportsController.cs # Financial reporting and analytics
โ โโโ โ๏ธ SettingsController.cs # User preferences and configuration
โ โโโ ๐๏ธ DatabaseController.cs # Database management utilities
โ
โโโ ๐ Models/ # Data models and entities
โ โโโ ๐ฐ Budget.cs # Budget entity and validation
โ โโโ ๐ฏ SavingsGoal.cs # Savings goals with progress tracking
โ โโโ ๐ SavingsEntry.cs # Individual savings transactions
โ โโโ ๐ฆ Loan.cs # Loan information and calculations
โ โโโ ๐ณ LoanPayment.cs # Payment records and history
โ โโโ ๐ฅ ThriftGroup.cs # Group savings management
โ โโโ ๐ค User.cs # User entity with financial profile
โ โโโ ๐ UserProfile.cs # Extended user information
โ โโโ ๐ธ Expense.cs # Expense tracking and categorization
โ โโโ ๐ฆ AccountBalance.cs # Account balance management
โ
โโโ ๐ ViewModels/ # Data transfer objects for views
โ โโโ ๐ DashboardViewModel.cs # Dashboard data aggregation
โ โโโ ๐ฐ BudgetViewModel.cs # Budget display and input models
โ โโโ ๐ฏ SavingsViewModel.cs # Savings goal presentation
โ โโโ ๐ฆ LoanViewModel.cs # Loan management interface
โ โโโ ๐ฅ ThriftGroupViewModel.cs # Group management views
โ โโโ ๐ ReportViewModel.cs # Analytics and reporting data
โ
โโโ ๐ Views/ # Razor views and UI templates
โ โโโ ๐ Home/ # Landing pages and static content
โ โโโ ๐ Dashboard/ # Financial overview interfaces
โ โโโ ๐ฐ Budget/ # Budget management UI
โ โโโ ๐ฏ Savings/ # Savings goal interfaces
โ โโโ ๐ฆ Loan/ # Loan management views
โ โโโ ๐ฅ ThriftGroup/ # Group collaboration UI
โ โโโ ๐ Reports/ # Analytics and reporting views
โ โโโ โ๏ธ Settings/ # Configuration interfaces
โ โโโ ๐ง Shared/ # Common layouts and partials
โ
โโโ ๐ Data/ # Database context and configuration
โ โโโ ๐๏ธ MongoDbContext.cs # MongoDB connection and setup
โ โโโ ๐ง ApplicationDbContext.cs # Entity Framework context
โ โโโ โ๏ธ Configurations/ # Entity configurations
โ โโโ ๐ IdentityConfiguration.cs
โ
โโโ ๐ Repositories/ # Data access layer
โ โโโ ๐ฐ BudgetRepository.cs # Budget data operations
โ โโโ ๐ฏ SavingsGoalRepository.cs # Savings goal data access
โ โโโ ๐ SavingsTransactionRepository.cs # Transaction management
โ โโโ ๐ฆ LoanRepository.cs # Loan data operations
โ โโโ ๐ณ LoanPaymentRepository.cs # Payment data access
โ โโโ ๐ฅ ThriftGroupRepository.cs # Group data management
โ โโโ ๐ค UserRepository.cs # User data operations
โ โโโ ๐ธ ExpenseRepository.cs # Expense data access
โ โโโ ๐ฆ AccountBalanceRepository.cs # Balance management
โ
โโโ ๐ Services/ # Business logic and external services
โ โโโ ๐ง LoanCalculationService.cs # Loan calculations and amortization
โ โโโ ๐ง EmailSender.cs # Email notification service
โ โโโ ๐ฅ MongoDbHealthCheck.cs # Database health monitoring
โ
โโโ ๐ Identity/ # Custom identity providers
โ โโโ ๐ค MongoUserStore.cs # MongoDB user store implementation
โ โโโ ๐ MongoRoleStore.cs # MongoDB role store implementation
โ
โโโ ๐ Areas/ # ASP.NET Areas for modular organization
โ โโโ ๐ Identity/ # Identity-related pages and functionality
โ โโโ ๐ Pages/ # Razor pages for authentication
โ
โโโ ๐ wwwroot/ # Static web assets
โ โโโ ๐จ css/ # Stylesheets and themes
โ โโโ ๐ js/ # JavaScript files and libraries
โ โโโ ๐ผ๏ธ images/ # Application images and icons
โ โโโ ๐ lib/ # Third-party libraries
โ
โโโ ๐ Migrations/ # Database migrations
โ โโโ ๐ง Entity Framework migration files
โ
โโโ ๐ Properties/ # Application properties
โ โโโ โ๏ธ launchSettings.json # Development server configuration
โ
โโโ โ๏ธ Program.cs # Application entry point and DI configuration
โโโ ๐ Startup.cs # Application startup configuration
โโโ ๐ appsettings.json # Application configuration
โโโ ๐๏ธ Thrift.csproj # Project file with dependencies
โโโ ๐ README.md # This documentation file
graph TB
A[๐ Web Request] --> B[๐ก๏ธ Authentication Middleware]
B --> C[๐ฏ MVC Controller]
C --> D[๐ Business Service]
D --> E[๐๏ธ Repository Layer]
E --> F[๐ MongoDB Database]
C --> G[๐ฑ View Model]
G --> H[๐จ Razor View]
H --> I[๐ค User Interface]
style A fill:#e1f5fe
style F fill:#c8e6c9
style I fill:#fff3e0
๐ค Users Collection
{
"_id": "ObjectId",
"userName": "string",
"email": "string",
"passwordHash": "string",
"emailConfirmed": "boolean",
"phoneNumber": "string",
"twoFactorEnabled": "boolean",
"lockoutEnd": "datetime",
"accessFailedCount": "number",
"profile": {
"firstName": "string",
"lastName": "string",
"dateOfBirth": "datetime",
"address": "string",
"phoneNumber": "string",
"occupation": "string",
"monthlyIncome": "decimal"
},
"createdAt": "datetime",
"updatedAt": "datetime"
}๐ฐ Budgets Collection
{
"_id": "ObjectId",
"name": "string",
"userId": "string",
"month": "datetime",
"totalIncome": "decimal",
"additionalIncome": "decimal",
"expenses": {
"housing": "decimal",
"food": "decimal",
"transportation": "decimal",
"healthcare": "decimal",
"entertainment": "decimal",
"personal": "decimal",
"debt": "decimal",
"other": "decimal"
},
"savingsAllocation": "decimal",
"notes": "string",
"createdAt": "datetime",
"updatedAt": "datetime"
}๐ฏ Savings Goals Collection
{
"_id": "ObjectId",
"title": "string",
"description": "string",
"targetAmount": "decimal",
"currentAmount": "decimal",
"targetDate": "datetime",
"monthlyContribution": "decimal",
"userId": "string",
"iconClass": "string",
"category": "string",
"priority": "number",
"isCompleted": "boolean",
"createdAt": "datetime",
"updatedAt": "datetime"
}๐ฆ Loans Collection
{
"_id": "ObjectId",
"loanName": "string",
"principalAmount": "decimal",
"currentBalance": "decimal",
"interestRate": "decimal",
"termInMonths": "number",
"monthlyPayment": "decimal",
"startDate": "datetime",
"userId": "string",
"loanType": "string",
"lender": "string",
"status": "string",
"paymentSchedule": [
{
"paymentNumber": "number",
"dueDate": "datetime",
"principalAmount": "decimal",
"interestAmount": "decimal",
"totalPayment": "decimal",
"remainingBalance": "decimal"
}
],
"createdAt": "datetime",
"updatedAt": "datetime"
}๐ฅ Thrift Groups Collection
{
"_id": "ObjectId",
"name": "string",
"description": "string",
"adminUserId": "string",
"contributionAmount": "decimal",
"payoutFrequency": "string",
"maxMembers": "number",
"currentMembers": "number",
"startDate": "datetime",
"endDate": "datetime",
"status": "string",
"members": [
{
"userId": "string",
"joinDate": "datetime",
"totalContributions": "decimal",
"payoutReceived": "boolean",
"payoutDate": "datetime"
}
],
"rules": {
"latePaymentFee": "decimal",
"withdrawalPolicy": "string",
"votingRights": "string"
},
"createdAt": "datetime",
"updatedAt": "datetime"
}Before setting up NestShare, ensure you have the following installed:
| ๐ Requirements | ๐ Download Links | ๐ Notes |
| Download .NET 8.0 | Required for running ASP.NET Core applications | |
| Download MongoDB Community | Primary database for the application | |
| Download Visual Studio | Recommended IDE (or VS Code) | |
| Download Git | Version control system |
# Clone the repository
git clone https://github.com/yourusername/nestshare.git
# Navigate to the project directory
cd nestshare๐ MongoDB Installation & Configuration
Automated Installation (Windows):
# Run the included MongoDB installer (Windows only)
./install_mongodb.batManual Installation:
-
Download MongoDB Community Edition
- Visit MongoDB Download Center
- Select your operating system
- Download and install with default settings
-
Start MongoDB Service
# Windows (as Administrator) net start MongoDB # macOS (with Homebrew) brew services start mongodb-community # Linux (systemd) sudo systemctl start mongod
-
Verify Installation
# Connect to MongoDB shell mongosh # In MongoDB shell, create the database use thrift_db
โ๏ธ Configuration Steps
-
Update Connection Strings
Edit
appsettings.json:{ "ConnectionStrings": { "MongoDbConnection": "mongodb://localhost:27017" }, "EmailSettings": { "SmtpServer": "smtp.gmail.com", "Port": 587, "SenderEmail": "your-email@gmail.com", "SenderName": "NestShare Financial App", "Username": "your-email@gmail.com", "Password": "your-app-password" } } -
Email Configuration (Optional)
- For Gmail: Enable 2FA and generate an App Password
- Update the EmailSettings section with your credentials
- Other SMTP providers: Adjust server and port settings accordingly
-
Development Settings Edit
appsettings.Development.jsonfor development-specific configurations:{ "Logging": { "LogLevel": { "Default": "Information", "Microsoft.AspNetCore": "Warning" } } }
# Restore NuGet packages
dotnet restore
# Build the application
dotnet build
# Run the application
dotnet runThe application will be available at:
- HTTP:
http://localhost:5226 - HTTPS:
https://localhost:7039
-
Navigate to the Application
- Open your browser and go to
https://localhost:7039
- Open your browser and go to
-
Database Health Check
- Visit
/healthto verify MongoDB connection - Visit
/MongoDbSetupfor database initialization
- Visit
-
Create Your Account
- Click "Register" to create your first user account
- Complete the registration process
-
Explore the Dashboard
- Log in and explore the financial dashboard
- Set up your first budget or savings goal
๐ณ Running with Docker
# Create a docker-compose.yml file
version: '3.8'
services:
mongodb:
image: mongo:7.0
container_name: nestshare-mongo
restart: unless-stopped
ports:
- "27017:27017"
volumes:
- mongodb_data:/data/db
environment:
MONGO_INITDB_DATABASE: thrift_db
nestshare:
build: .
container_name: nestshare-app
restart: unless-stopped
ports:
- "5000:80"
depends_on:
- mongodb
environment:
- ASPNETCORE_ENVIRONMENT=Production
- ConnectionStrings__MongoDbConnection=mongodb://mongodb:27017
volumes:
mongodb_data:
# Run with Docker Compose
docker-compose up -d๐ป Local Development Environment
-
IDE Configuration
# Open in Visual Studio start Thrift.sln # Or open in VS Code code .
-
Debug Configuration
- Set
Thriftas the startup project - Configure breakpoints as needed
- Use F5 to start debugging
- Set
-
Hot Reload
# Enable hot reload for faster development dotnet watch run
๐ฌ Running Tests
# Run all tests
dotnet test
# Run tests with coverage
dotnet test --collect:"XPlat Code Coverage"
# Run specific test project
dotnet test Tests/Thrift.Tests.csproj๐ Adding Dependencies
# Add a new package
dotnet add package PackageName
# Update packages
dotnet restore
# Remove a package
dotnet remove package PackageNameโ๏ธ Configuration Options
Connection Strings:
{
"ConnectionStrings": {
"MongoDbConnection": "mongodb://localhost:27017",
"DefaultConnection": "Server=localhost;Database=thrift_db;User=root;Password=;"
}
}Email Settings:
{
"EmailSettings": {
"SmtpServer": "smtp.gmail.com",
"Port": 587,
"SenderEmail": "your-email@gmail.com",
"SenderName": "NestShare Financial App",
"Username": "your-email@gmail.com",
"Password": "your-app-password"
}
}Security Configuration:
{
"IdentityOptions": {
"Password": {
"RequireDigit": true,
"RequireLowercase": true,
"RequireUppercase": true,
"RequiredLength": 6,
"RequiredUniqueChars": 1
},
"Lockout": {
"DefaultLockoutTimeSpan": "00:05:00",
"MaxFailedAccessAttempts": 5,
"AllowedForNewUsers": true
}
}
}๐ Environment Configuration
# Development
ASPNETCORE_ENVIRONMENT=Development
ASPNETCORE_URLS=https://localhost:7039;http://localhost:5226
# Production
ASPNETCORE_ENVIRONMENT=Production
ASPNETCORE_URLS=https://yourdomain.com
# Database
MONGODB_CONNECTION_STRING=mongodb://localhost:27017
DATABASE_NAME=thrift_db
# Email
SMTP_SERVER=smtp.gmail.com
SMTP_PORT=587
SMTP_USERNAME=your-email@gmail.com
SMTP_PASSWORD=your-app-password๐ Available Endpoints
POST /Identity/Account/Register # User registration
POST /Identity/Account/Login # User login
POST /Identity/Account/Logout # User logout
GET /Identity/Account/Manage # Account management
GET /Dashboard # Financial overview
GET /Dashboard/GetSummary # Dashboard data API
POST /Dashboard/UpdateWidgets # Widget configuration
GET /Budget # List budgets
GET /Budget/Create # Create budget form
POST /Budget/Create # Create budget
GET /Budget/Edit/{id} # Edit budget form
POST /Budget/Edit/{id} # Update budget
DELETE /Budget/Delete/{id} # Delete budget
GET /Savings # List savings goals
POST /Savings/CreateGoal # Create savings goal
POST /Savings/AddEntry # Add savings entry
GET /Savings/Progress/{id} # Goal progress data
GET /Loan # List loans
POST /Loan/Create # Create loan
GET /Loan/Details/{id} # Loan details
POST /Loan/Payment # Record payment
GET /Loan/Schedule/{id} # Payment schedule
GET /ThriftGroup # List groups
POST /ThriftGroup/Create # Create group
POST /ThriftGroup/Join # Join group
POST /ThriftGroup/Contribute # Make contribution
๐ป Code Examples
Creating a Budget (JavaScript):
// Create a new budget
const budget = {
name: "Monthly Budget - January 2024",
totalIncome: 5000,
housingExpenses: 1500,
foodExpenses: 600,
transportationExpenses: 400,
savingsAllocation: 1000,
};
fetch("/Budget/Create", {
method: "POST",
headers: {
"Content-Type": "application/json",
RequestVerificationToken: getAntiForgeryToken(),
},
body: JSON.stringify(budget),
})
.then((response) => response.json())
.then((data) => console.log("Budget created:", data));Adding a Savings Goal (C#):
// Create a savings goal
var savingsGoal = new SavingsGoal
{
Title = "Emergency Fund",
TargetAmount = 10000,
TargetDate = DateTime.Now.AddYears(1),
MonthlyContribution = 833,
UserId = userId
};
await _savingsGoalRepository.CreateAsync(savingsGoal);๐ Authentication & Authorization
- ASP.NET Core Identity: Robust user management system
- Password Policies: Configurable password complexity requirements
- Account Lockout: Protection against brute force attacks
- Two-Factor Authentication: Enhanced security for sensitive operations
- Role-Based Access Control: Granular permission management
- Session Management: Secure session handling with configurable timeouts
๐ก๏ธ Data Protection
- HTTPS Enforcement: All traffic encrypted in transit
- Data Validation: Input validation and sanitization
- SQL Injection Prevention: Parameterized queries and ORM usage
- XSS Protection: Output encoding and CSP headers
- CSRF Protection: Anti-forgery tokens on forms
- Secure Headers: HSTS, X-Frame-Options, and other security headers
โ๏ธ Security Settings
// Identity Configuration (Program.cs)
services.Configure<IdentityOptions>(options =>
{
// Password settings
options.Password.RequireDigit = true;
options.Password.RequireLowercase = true;
options.Password.RequireNonAlphanumeric = false;
options.Password.RequireUppercase = true;
options.Password.RequiredLength = 6;
options.Password.RequiredUniqueChars = 1;
// Lockout settings
options.Lockout.DefaultLockoutTimeSpan = TimeSpan.FromMinutes(5);
options.Lockout.MaxFailedAccessAttempts = 5;
options.Lockout.AllowedForNewUsers = true;
// User settings
options.User.RequireUniqueEmail = true;
});
// Cookie Configuration
services.ConfigureApplicationCookie(options =>
{
options.Cookie.HttpOnly = true;
options.ExpireTimeSpan = TimeSpan.FromDays(5);
options.LoginPath = "/Identity/Account/Login";
options.AccessDeniedPath = "/Identity/Account/AccessDenied";
options.SlidingExpiration = true;
});๐ฉ๏ธ Azure Deployment
-
Azure App Service
# Create resource group az group create --name nestshare-rg --location "East US" # Create App Service plan az appservice plan create --name nestshare-plan --resource-group nestshare-rg --sku B1 # Create web app az webapp create --name nestshare-app --resource-group nestshare-rg --plan nestshare-plan # Deploy from local Git az webapp deployment source config-local-git --name nestshare-app --resource-group nestshare-rg
-
Azure Cosmos DB (MongoDB API)
# Create Cosmos DB account az cosmosdb create --name nestshare-cosmos --resource-group nestshare-rg --kind MongoDB # Get connection string az cosmosdb keys list --name nestshare-cosmos --resource-group nestshare-rg --type connection-strings
๐ข Docker Production Deployment
Dockerfile:
FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
WORKDIR /src
COPY ["Thrift.csproj", "."]
RUN dotnet restore "Thrift.csproj"
COPY . .
WORKDIR "/src"
RUN dotnet build "Thrift.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "Thrift.csproj" -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "Thrift.dll"]Production docker-compose.yml:
version: "3.8"
services:
nestshare:
build: .
ports:
- "80:80"
- "443:443"
environment:
- ASPNETCORE_ENVIRONMENT=Production
- ASPNETCORE_URLS=https://+:443;http://+:80
- ASPNETCORE_Kestrel__Certificates__Default__Password=your_cert_password
- ASPNETCORE_Kestrel__Certificates__Default__Path=/https/aspnetapp.pfx
volumes:
- ./https:/https:ro
depends_on:
- mongodb
mongodb:
image: mongo:7.0
restart: unless-stopped
environment:
MONGO_INITDB_DATABASE: thrift_db
volumes:
- mongodb_data:/data/db
ports:
- "27017:27017"
volumes:
mongodb_data:โ๏ธ Production Settings
appsettings.Production.json:
{
"ConnectionStrings": {
"MongoDbConnection": "mongodb://production-server:27017"
},
"Logging": {
"LogLevel": {
"Default": "Warning",
"Microsoft.AspNetCore": "Warning"
}
},
"EmailSettings": {
"SmtpServer": "smtp.sendgrid.net",
"Port": 587,
"SenderEmail": "noreply@nestshare.com",
"SenderName": "NestShare Financial App"
},
"AllowedHosts": "nestshare.com,www.nestshare.com"
}Production Checklist:
- HTTPS certificate configured
- Connection strings updated
- Email service configured
- Error logging set up
- Health checks enabled
- Security headers configured
- Database backups scheduled
- Monitoring and alerting configured
We welcome contributions from the community! Here's how you can get involved:
๐ Fork and Pull Request Workflow
-
Fork the Repository
# Fork on GitHub and clone your fork git clone https://github.com/yourusername/nestshare.git cd nestshare
-
Create a Feature Branch
# Create and switch to a new branch git checkout -b feature/your-feature-name -
Make Changes
- Write clean, well-documented code
- Follow the existing code style and conventions
- Add tests for new functionality
-
Commit Changes
# Stage and commit your changes git add . git commit -m "feat: add new budget analytics feature"
-
Submit Pull Request
- Push your branch to your fork
- Create a pull request on the main repository
- Provide a clear description of your changes
๐ป Code Standards
C# Coding Standards:
// Use meaningful names
public class BudgetAnalysisService
{
private readonly IBudgetRepository _budgetRepository;
// XML documentation for public methods
/// <summary>
/// Calculates budget variance for the specified period
/// </summary>
/// <param name="userId">The user identifier</param>
/// <param name="period">The analysis period</param>
/// <returns>Budget variance analysis result</returns>
public async Task<BudgetVarianceResult> CalculateVarianceAsync(
string userId,
DatePeriod period)
{
// Implementation
}
}JavaScript Standards:
// Use modern ES6+ syntax
const BudgetChart = {
// Use meaningful function names
async loadChartData(budgetId) {
try {
const response = await fetch(`/api/budget/${budgetId}/chart-data`);
const data = await response.json();
return data;
} catch (error) {
console.error("Failed to load chart data:", error);
throw error;
}
},
};๐งช Testing Requirements
- Unit Tests: Write unit tests for all business logic
- Integration Tests: Test controller endpoints and database operations
- UI Tests: Test critical user workflows
Example Unit Test:
[Test]
public async Task CalculateLoanPayment_ValidInputs_ReturnsCorrectPayment()
{
// Arrange
var principal = 100000m;
var annualRate = 0.05m;
var termInMonths = 360;
// Act
var payment = _loanCalculationService.CalculateMonthlyPayment(
principal, annualRate, termInMonths);
// Assert
Assert.That(payment, Is.EqualTo(536.82m).Within(0.01m));
}๐ How to Report Bugs
When reporting bugs, please include:
-
Environment Information
- Operating System
- .NET version
- MongoDB version
- Browser (if UI-related)
-
Steps to Reproduce
- Clear, numbered steps
- Expected vs. actual behavior
- Screenshots if applicable
-
Additional Context
- Error messages
- Log files
- Related issues
Bug Report Template:
## Bug Description
Brief description of the issue
## Environment
- OS: Windows 11
- .NET: 8.0
- Browser: Chrome 120.0
## Steps to Reproduce
1. Navigate to /Budget/Create
2. Fill in budget details
3. Click "Save Budget"
4. Error occurs
## Expected Behavior
Budget should be saved successfully
## Actual Behavior
Error message: "Unable to save budget"
## Additional Context
- Console shows 500 error
- Happens only with large budget amounts๐ Suggesting New Features
We love feature suggestions! Please include:
- Use Case: Describe the problem or need
- Proposed Solution: Your idea for solving it
- Alternatives: Other approaches you've considered
- Mockups: Visual designs if applicable
Feature Request Template:
## Feature Description
Brief description of the requested feature
## Problem Statement
What problem does this solve?
## Proposed Solution
Detailed description of your proposed solution
## User Stories
- As a user, I want to...
- So that I can...
## Acceptance Criteria
- [ ] Criteria 1
- [ ] Criteria 2
- [ ] Criteria 3
## Additional Context
Any other context, mockups, or examplesThis project is licensed under the MIT License - see the LICENSE file for details.
- โ Commercial Use: You can use this software commercially
- โ Modification: You can modify the source code
- โ Distribution: You can distribute the software
- โ Private Use: You can use this software privately
- โ Liability: The authors are not liable for any damages
- โ Warranty: No warranty is provided
๐ฌ Community Support
- GitHub Discussions: Ask questions and share ideas
- GitHub Issues: Report bugs and request features
- Stack Overflow: Tag questions with
nestshare - Email: support@nestshare.com (for urgent issues)
๐ Documentation
- User Guide:
/docs/user-guide.md - Developer Guide:
/docs/developer-guide.md - API Reference:
/docs/api-reference.md - Deployment Guide:
/docs/deployment.md
โ ๏ธ Common Issues
MongoDB Connection Issues:
# Check if MongoDB is running
mongosh --eval "db.runCommand({ping: 1})"
# Restart MongoDB service
sudo systemctl restart mongod # Linux
net stop MongoDB && net start MongoDB # WindowsBuild Errors:
# Clean and restore packages
dotnet clean
dotnet restore
dotnet buildEmail Service Issues:
- Verify SMTP settings in appsettings.json
- Check firewall and antivirus settings
- For Gmail: Enable 2FA and use App Passwords
๐๏ธ Version 2.0 (Q2 2024)
- Mobile App: React Native mobile application
- AI Insights: Machine learning-powered financial recommendations
- Investment Tracking: Portfolio management and tracking
- Cryptocurrency Support: Digital asset management
- Advanced Analytics: Predictive financial modeling
- Multi-currency Support: International financial management
- Bank Integration: Direct bank account connections
- Automated Categorization: AI-powered expense categorization
๐ฎ Future Versions
- Financial Planning: Retirement and life goal planning
- Tax Management: Tax calculation and filing assistance
- Insurance Tracking: Policy management and claims tracking
- Family Finance: Multi-user family account management
- Business Features: Small business financial management
- API Platform: Public API for third-party integrations
- White-label Solution: Customizable platform for organizations
We thank all the amazing contributors who have helped make NestShare better:
- Core Team: Development and maintenance
- Community Contributors: Bug fixes and feature additions
- Beta Testers: Early feedback and testing
- Documentation Writers: Improving our docs
Special thanks to the open-source projects that make NestShare possible:
- ASP.NET Core: Microsoft's web framework
- MongoDB: NoSQL database platform
- Bootstrap: CSS framework for responsive design
- Chart.js: JavaScript charting library
- Font Awesome: Icon library
- jQuery: JavaScript library
This project was inspired by the need for accessible, comprehensive financial management tools that work for individuals and groups alike.
If you find NestShare useful, please consider giving us a star on GitHub! It helps others discover the project and motivates our continued development.
Built with โค๏ธ by the NestShare Team
๐ง Email โข ๐ GitHub โข ๐ Website โข ๐ฑ Twitter
Last updated: January 2024