🔧 Deployment Fixes: - Change default compose file to docker-compose.deploy-local.yml - Remove obsolete 'version' attribute from compose files - Ensures deployment works immediately without GitHub Container Registry ✅ Ready to Deploy: - Use docker-compose.deploy-local.yml (builds locally) - No more 'version is obsolete' warnings - No dependency on GitHub Container Registry access This makes deployment work out-of-the-box while GHCR image access is resolved. |
||
|---|---|---|
| .github | ||
| client | ||
| data | ||
| server | ||
| .dockerignore | ||
| .gitignore | ||
| build-deploy.sh | ||
| CONTAINER_INTERFACE_DEPLOYMENT.md | ||
| docker-compose.deploy-local.yml | ||
| docker-compose.deploy.yml | ||
| docker-compose.ghcr.yml | ||
| docker-compose.yml | ||
| DOCKER_DEPLOYMENT.md | ||
| Dockerfile | ||
| GITHUB_CONTAINER_REGISTRY.md | ||
| nginx.conf | ||
| nginx.deploy.conf | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
Etsy Business Tracker
A comprehensive web application for tracking and managing your Etsy business operations, including products, orders, customers, analytics, and expenses.
🚀 Features
- Dashboard: Real-time overview of business metrics and KPIs
- Product Management: Track product listings, variations, pricing, and inventory
- Order Tracking: Monitor order status, fulfillment, and shipping
- Customer Management: Manage customer data, purchase history, and communication
- Sales Analytics: Revenue tracking, profit margins, and trend analysis
- Expense Tracking: Business expenses, tax deductions, and cost analysis
- Inventory Management: Stock levels, reorder alerts, and supplier tracking
- Financial Reports: P&L statements, tax reports, and business insights
🛠 Tech Stack
Frontend
- React 18 with TypeScript
- Vite for fast development and building
- Tailwind CSS for styling
- Redux Toolkit for state management
- React Router for navigation
- Chart.js for data visualization
- React Hook Form with Zod validation
Backend
- Node.js with Express and TypeScript
- MongoDB with Mongoose ODM
- JWT authentication
- bcryptjs for password hashing
- Helmet for security
- Express Rate Limit for API protection
- Morgan for logging
- Cors for cross-origin requests
📦 Project Structure
etsy-tracker/
├── client/ # React frontend
│ ├── src/
│ │ ├── components/ # Reusable UI components
│ │ ├── pages/ # Page components
│ │ ├── store/ # Redux store and slices
│ │ ├── utils/ # Utility functions
│ │ └── ...
│ ├── public/
│ └── package.json
├── server/ # Node.js backend
│ ├── src/
│ │ ├── controllers/ # Route handlers
│ │ ├── models/ # Database models
│ │ ├── routes/ # API routes
│ │ ├── middleware/ # Custom middleware
│ │ └── index.ts # Server entry point
│ ├── .env.example
│ └── package.json
├── .github/
│ └── copilot-instructions.md
├── package.json # Root package.json
└── README.md
🚀 Getting Started
Quick Deploy (Recommended)
Option 1: GitHub Container Registry (Fastest)
git clone https://github.com/dlawler489/etsy-finance-tracker.git
cd etsy-finance-tracker
mkdir -p data/{csv,pdf,spreadsheets}
./build-deploy.sh ghcr
Option 2: Local Docker Build
git clone https://github.com/dlawler489/etsy-finance-tracker.git
cd etsy-finance-tracker
./build-deploy.sh local
Both options will start the application at http://localhost:3000
Development Setup
For development and customization:
Prerequisites
- Node.js (v18 or higher)
- npm or yarn
- Docker Desktop (for containerized deployment)
Installation
-
Clone the repository
git clone https://github.com/dlawler489/etsy-finance-tracker.git cd etsy-finance-tracker -
Install dependencies
cd client && npm install && cd .. cd server && npm install && cd .. -
Set up environment variables (optional)
cd server cp .env.example .env # Edit .env if needed for development
Development
Option 1: Run both servers with Docker (recommended)
./build-deploy.sh local
Option 2: Run development servers separately
npm run dev
Option 2: Run servers separately
Start the backend server:
npm run server:dev
# Server runs on http://localhost:8080
Start the frontend development server:
npm run client:dev
# Client runs on http://localhost:3000 (or next available port)
Building for Production
# Build both client and server
npm run build
# Or build separately
npm run client:build
npm run server:build
Running Tests
npm test
🔧 Configuration
Environment Variables (Server)
Create a .env file in the server directory:
NODE_ENV=development
PORT=8080
CLIENT_URL=http://localhost:3000
MONGODB_URI=mongodb://localhost:27017/etsy-tracker
JWT_SECRET=your-super-secret-jwt-key-change-this-in-production
SESSION_SECRET=your-super-secret-session-key-change-this-in-production
Database Setup
The application uses MongoDB to store:
- Products: Product details, variants, pricing, inventory
- Orders: Order information, customer details, status tracking
- Customers: Customer profiles, purchase history
- Expenses: Business expense records
- Users: Authentication and user management
📊 API Endpoints
Authentication
POST /api/auth/register- User registrationPOST /api/auth/login- User loginPOST /api/auth/logout- User logoutGET /api/auth/me- Get current user
Products
GET /api/products- Get all productsPOST /api/products- Create new productGET /api/products/:id- Get specific productPUT /api/products/:id- Update productDELETE /api/products/:id- Delete product
Orders
GET /api/orders- Get all ordersPOST /api/orders- Create new orderGET /api/orders/:id- Get specific orderPUT /api/orders/:id- Update order status
Customers
GET /api/customers- Get all customersPOST /api/customers- Create new customerGET /api/customers/:id- Get specific customerPUT /api/customers/:id- Update customer
Expenses
GET /api/expenses- Get all expensesPOST /api/expenses- Create new expensePUT /api/expenses/:id- Update expenseDELETE /api/expenses/:id- Delete expense
Analytics
GET /api/analytics/dashboard- Get dashboard metricsGET /api/analytics/sales- Get sales analyticsGET /api/analytics/products- Get product performanceGET /api/analytics/customers- Get customer analytics
🎨 UI/UX
The application features a modern, responsive design built with Tailwind CSS:
- Responsive Design: Works on desktop, tablet, and mobile devices
- Dark/Light Mode: User preference support
- Interactive Charts: Visual analytics and reporting
- Form Validation: Real-time validation with helpful error messages
- Toast Notifications: User feedback for actions
🔒 Security Features
- JWT Authentication: Secure token-based authentication
- Password Hashing: bcrypt for secure password storage
- Rate Limiting: API endpoint protection
- CORS Configuration: Cross-origin request handling
- Input Validation: Server-side validation for all inputs
- Security Headers: Helmet.js for security headers
🚀 Deployment
Using PM2 (Recommended for production)
# Build the application
npm run build
# Install PM2 globally
npm install -g pm2
# Start the server with PM2
cd server
pm2 start dist/index.js --name "etsy-tracker-api"
# Serve the client (using a static file server)
pm2 serve client/dist 3000 --name "etsy-tracker-client"
Using Docker
# Build and run with Docker Compose
docker-compose up --build
🤝 Contributing
- Fork the repository
- Create a feature branch:
git checkout -b feature/new-feature - Commit your changes:
git commit -am 'Add new feature' - Push to the branch:
git push origin feature/new-feature - Submit a pull request
📝 License
This project is licensed under the MIT License - see the LICENSE file for details.
🆘 Troubleshooting
Common Issues
-
Port already in use: If you get an EADDRINUSE error, kill the process using the port:
lsof -ti:8080 | xargs kill -9 -
MongoDB connection issues: Ensure MongoDB is running and the connection string is correct in your
.envfile. -
Build errors: Clear node_modules and reinstall:
rm -rf node_modules client/node_modules server/node_modules npm run install:all
VS Code Integration
This project includes VS Code configuration for:
- Tasks: Pre-configured build and dev tasks
- Debugging: Launch configurations for both client and server
- Extensions: Recommended extensions list
- Settings: Project-specific settings
📞 Support
If you encounter any issues or have questions, please:
- Check the troubleshooting section above
- Search existing issues in the repository
- Create a new issue with detailed information about the problem
Built with ❤️ for Etsy sellers who want to grow their business through better data tracking and analysis.