Open-source accounting management platform for Romanian PFA businesses
Roti's Conta is a web application designed to simplify accounting management for independent professionals (PFA) in Romania. It provides essential tools for fiscal record-keeping, document management, and automatic tax calculations compliant with Romanian legislation.
Built for: Personal use, but open-sourced for the Romanian PFA community.
- Income & Expense Register - Complete tracking with monthly/annual reports
- In/Out Document Register - Correspondence and official document management
- Inventory Register - Asset tracking and valuation
- Tax Calculator - Automatic calculation of CAS (25%), CASS (10%), and Income Tax (10%) based on legal thresholds
- Document Management - Upload and organize contracts, invoices, declarations, and miscellaneous documents
- Dashboard - Visual statistics and quick access to common operations
- JWT-based authentication with httpOnly cookies
- Secure file storage with Vercel Blob
- Input validation using Zod schemas
- Data sanitization to prevent NoSQL injection
- CSV export for all registers
Frontend:
- Nuxt.js 4
- TypeScript
- TailwindCSS
- Pinia (state management)
Backend:
- Nuxt server routes
- MongoDB with Mongoose ODM
- Vercel Blob (file storage)
- Node.js 18+
- MongoDB 5.0+
- pnpm (recommended) or npm
# Clone repository
git clone https://github.com/Rotis-Web/rotis-conta.git
cd rotis-conta
# Install dependencies
pnpm install
# Configure environment variables
cp .env.example .env
# Edit .env with your configuration
# Run development server
pnpm devThe application will be available at http://localhost:3000
# Development environment
docker-compose --profile dev up
# Production environment
docker-compose --profile prod up -dServices:
- App (dev):
http://localhost:3000+ Hot reload onhttp://localhost:24678 - App (prod):
http://localhost:3000 - MongoDB:
localhost:27017 - Mongo Express:
http://localhost:8081(dev/tools profile)
Create a .env file in the project root:
# Database
MONGODB_URI=mongodb://admin:admin123@mongodb:27017/rotis-conta_app?authSource=admin
# JWT Secrets (generate with: openssl rand -base64 32)
JWT_SECRET=your_jwt_secret_min_32_characters
# File Storage (Vercel Blob)
BLOB_READ_WRITE_TOKEN=your_vercel_blob_token
# API
API_BASE_URL="http://localhost:3000/api"
# Environment
NODE_ENV=developmentFor production: Use strong secrets and secure database credentials.
rotis-conta/
βββ server/
β βββ api/ # API routes
β βββ models/ # MongoDB schemas
β βββ middleware/ # Auth & validation
β βββ plugins/ # Database connection
β βββ utils/ # JWT, validation helpers
βββ app/
β βββ components/ # Vue components
β βββ composables/ # Reusable logic
β βββ middleware/ # Auth & guest handling
β βββ layouts/ # Application layouts
β βββ pages/ # Application routes
βββ stores/ # Pinia state management
βββ types/ # TypeScript definitions
βββ Dockerfile # Multi-stage build
βββ docker-compose.yml # Development & production
- Register/Login - Create account with email and password
- Configure PFA Data - Settings β PFA Data (name, CUI, bank details)
- Add Entries - Navigate to registers and add income/expense records
- Calculate Taxes - Calculator β Select year β Calculate from registry or manual input
- Upload Documents - Documents section β Select category β Upload files
- Export Data - Each register has CSV export functionality
- Passwords hashed via bcrypt
- JWT access tokens (15min expiry)
- Input validation and sanitization on all routes
- Rate limiting on every endpoint
- CSP headers and XSS protection
- No browser storage APIs - All state managed in-memory or server-side
This software is provided for informational purposes. Tax calculations are estimates based on Romanian legislation at the time of development. Always consult with a certified accountant for official tax obligations and declarations.







