A modern web application for filling out Wisconsin and federal tax forms with ease. Built with React, Firebase, and pdf-lib.
- 🔐 Secure Authentication - Firebase-based user authentication
- 📝 Smart Form Filling - Guided form completion with validation
- 📤 Document Upload - Upload and store supporting tax documents
- 📄 PDF Generation - Generate completed tax forms as downloadable PDFs
- 💾 Auto-Save - Never lose your progress with automatic draft saving
- 📱 Responsive Design - Works seamlessly on desktop, tablet, and mobile
- 🔒 Data Security - All data encrypted and stored securely in Firebase
- Form 1 - Individual Income Tax Return
- Form 1NPR - Nonresident/Part-Year Resident Income Tax Return
- Schedule I - Itemized Deductions
- Form 1040 - U.S. Individual Income Tax Return
- Schedule C - Profit or Loss from Business
- Frontend: React 18 with Vite
- Backend: Firebase Authentication, Firebase Storage (GCP Buckets)
- Storage Architecture:
form-templates/- Tax form PDF templatesuser-tax-forms/- User's completed forms and documents
- PDF Processing: pdf-lib, react-pdf
- Form Management: Formik, Yup
- Styling: Custom CSS with CSS Variables
- Icons: React Icons
- Routing: React Router v6
- Notifications: React Toastify
- Node.js 16+ and npm/yarn
- Firebase account
- Git
-
Clone the repository
git clone https://github.com/yourusername/wisconsin-tax-form-filler.git cd wisconsin-tax-form-filler -
Install dependencies
npm install
-
Set up Firebase
- Create a new Firebase project at Firebase Console
- Enable Authentication (Email/Password)
- Set up Firebase Storage (see
docs/GCP_STORAGE_SETUP.md) - Copy your Firebase configuration
-
Configure environment variables
cp .env.example .env
Edit
.envand add your Firebase credentials:VITE_FIREBASE_API_KEY=your_api_key VITE_FIREBASE_AUTH_DOMAIN=your_auth_domain VITE_FIREBASE_PROJECT_ID=your_project_id VITE_FIREBASE_STORAGE_BUCKET=your_storage_bucket VITE_FIREBASE_MESSAGING_SENDER_ID=your_sender_id VITE_FIREBASE_APP_ID=your_app_id -
Run the development server
npm run dev
-
Open your browser Navigate to
http://localhost:3000
src/
├── components/ # Reusable UI components
│ ├── Auth/ # Authentication components
│ ├── Common/ # Common UI components (Button, Input, etc.)
│ ├── Forms/ # Tax form components
│ ├── Layout/ # Layout components (Header, Footer)
│ ├── PDF/ # PDF viewer and related components
│ └── Upload/ # File upload components
├── config/ # Configuration files
│ └── firebase.js # Firebase configuration
├── constants/ # Application constants
│ ├── formFields.js # Form field definitions
│ └── taxForms.js # Tax form metadata
├── contexts/ # React Context providers
│ ├── AuthContext.jsx # Authentication context
│ └── TaxFormContext.jsx # Tax form state management
├── hooks/ # Custom React hooks
│ ├── useForm.js # Form handling hook
│ ├── useFileUpload.js # File upload hook
│ └── useLocalStorage.js # Local storage hook
├── pages/ # Page components
│ ├── HomePage.jsx
│ ├── LoginPage.jsx
│ ├── RegisterPage.jsx
│ ├── DashboardPage.jsx
│ ├── TaxFormSelectionPage.jsx
│ ├── TaxFormInputPage.jsx
│ ├── DocumentUploadPage.jsx
│ ├── ReviewPage.jsx
│ ├── HistoryPage.jsx
│ ├── ProfilePage.jsx
│ └── NotFoundPage.jsx
├── services/ # API and service layers
│ ├── authService.js # Authentication service
│ ├── gcpStorageService.js # GCP Storage service (main storage)
│ ├── storageService.js # Legacy Firebase Storage service
│ ├── firestoreService.js # Legacy Firestore service (optional)
│ └── pdfService.js # PDF manipulation service
├── utils/ # Utility functions
│ ├── helpers.js # General helper functions
│ └── validators.js # Form validation utilities
├── App.jsx # Main App component
├── main.jsx # Application entry point
└── index.css # Global styles
npm run buildThe build files will be in the dist/ directory.
-
Install Firebase CLI:
npm install -g firebase-tools
-
Login to Firebase:
firebase login
-
Initialize Firebase:
firebase init
-
Deploy:
npm run build firebase deploy
The built files in dist/ can be deployed to any static hosting service:
- Vercel
- Netlify
- AWS S3
- Google Cloud Storage
The application is designed to support both:
- Fillable PDF Forms - PDFs with form fields that can be programmatically filled
- Non-fillable PDFs - PDFs where text overlays are added at specific coordinates
See PDF_IMPLEMENTATION_GUIDE.md for detailed instructions on implementing PDF form filling based on your form type.
- Authentication Setup: See SETUP_GUIDE.md
- GCP Storage Setup: See GCP_STORAGE_SETUP.md
Contributions are welcome! Please feel free to submit a Pull Request.
This project is licensed under the MIT License.
This application is for educational purposes. Always consult with a tax professional for official tax filing. The developers are not responsible for any errors in tax calculations or submissions.
For issues and questions, please open an issue on GitHub.
- Support for more tax forms
- E-filing integration
- Tax calculation engine
- Multi-language support
- Mobile app version
- Tax professional collaboration features