TaxFront is a modern, secure web application designed to streamline tax document management. It provides an intuitive interface for users to upload, organize, and track their tax documents, with built-in security features and real-time updates.
-
User Authentication
- Secure sign-up and sign-in with Firebase Authentication
- Role-based access control (users and accountants)
- OAuth 2.0 support for social login
-
Document Management
- Secure document upload with client-side encryption
- Automatic document type detection
- Document status tracking
- Version history and audit trail
-
Dashboard & Analytics
- Real-time document status updates
- Tax summary and insights
- Document categorization
- Year-over-year comparison
-
Security
- End-to-end encryption
- CORS protection
- Rate limiting
- Input validation and sanitization
- See SECURITY.md for details
- React 18 with TypeScript
- Vite for build tooling
- TailwindCSS for styling
- Firebase SDK for authentication
- Firebase Analytics for usage tracking
- Firebase Cloud Functions (Python)
- Firebase Authentication
- Cloud Firestore
- Firebase Storage
- Google Cloud Platform
- Node.js 18+
- Python 3.12+
- Firebase CLI
- Google Cloud SDK
-
Clone the repository:
git clone https://github.com/chenyuan99/TaxFront.git cd TaxFront
-
Install frontend dependencies:
cd frontend npm install
-
Install backend dependencies:
cd ../backend/parser/functions pip install -r requirements.txt
-
Set up environment variables:
# Frontend (.env) REACT_APP_FIREBASE_API_KEY=your_api_key REACT_APP_FIREBASE_AUTH_DOMAIN=your_auth_domain REACT_APP_FIREBASE_PROJECT_ID=your_project_id REACT_APP_FIREBASE_STORAGE_BUCKET=your_storage_bucket REACT_APP_FIREBASE_MESSAGING_SENDER_ID=your_sender_id REACT_APP_FIREBASE_APP_ID=your_app_id REACT_APP_FIREBASE_MEASUREMENT_ID=your_measurement_id
-
Start the frontend development server:
cd frontend npm run dev
-
Start the backend functions locally:
cd backend/parser/functions firebase emulators:start
The application uses GitHub Actions for CI/CD:
- Frontend is automatically deployed
- Backend functions are deployed to Firebase
- See
.github/workflows
for configuration
TaxFront can be easily deployed using Docker. Follow these steps to get started:
- Docker
- Docker Compose
- Firebase account with necessary configurations
- Clone the repository:
git clone https://github.com/chenyuan99/TaxFront.git
cd TaxFront
- Create environment file:
cp .env.example .env
- Update the
.env
file with your Firebase configuration:
- Add your Firebase API credentials
- Base64 encode your Firebase service account JSON and add it to FIREBASE_CREDENTIALS
- Build and start the containers:
docker-compose up --build
- Access the application:
- Frontend: http://localhost:80
- Backend API: http://localhost:5000
The application is containerized into two main services:
- Frontend Container:
- Node.js for building
- Nginx for serving
- Configured for React Router
- Proxies API requests to backend
- Backend Container:
- Python Flask application
- Gunicorn for production serving
- Includes all parser dependencies
- Connected to Firebase services
Required environment variables in .env
:
FIREBASE_API_KEY=
FIREBASE_AUTH_DOMAIN=
FIREBASE_PROJECT_ID=
FIREBASE_STORAGE_BUCKET=
FIREBASE_MESSAGING_SENDER_ID=
FIREBASE_APP_ID=
FIREBASE_CREDENTIALS=
- Development: Use
docker-compose up
with hot-reloading - Production: Build optimized images with
docker-compose -f docker-compose.prod.yml up
Common issues:
-
Port conflicts:
- Change port mappings in docker-compose.yml if 80 or 5000 are in use
-
Firebase credentials:
- Ensure FIREBASE_CREDENTIALS is properly base64 encoded
- Verify all Firebase configuration variables
-
Container access:
- Frontend container:
docker exec -it taxfront-frontend sh
- Backend container:
docker exec -it taxfront-backend sh
- Frontend container:
For more detailed information, check the documentation in the docs
directory.
- Frontend:
npm test
- Backend:
python -m pytest
- E2E:
npm run cypress:run
- Fork the repository
- Create your feature branch:
git checkout -b feature/AmazingFeature
- Commit your changes:
git commit -m 'Add some AmazingFeature'
- Push to the branch:
git push origin feature/AmazingFeature
- Open a Pull Request
See SECURITY.md for security policies and procedures.
Yuan Chen - @chenyuan99
Project Link: https://github.com/chenyuan99/TaxFront