- Added SimpleBrowserProcessor class to handle student requests in a queue. - Introduced methods for adding requests, notifying subscribers, and processing the queue. - Mock AI matching logic implemented to simulate resource matching based on request categories and urgency. - Added generateInsights method to analyze request trends and urgencies. feat: Create authentication context for user management - Developed AuthContext to manage user authentication state. - Implemented login and logout functionalities with mock user data. - Added loading state management during authentication processes. feat: Add notification context for managing user notifications - Created NotificationContext to handle notifications throughout the application. - Implemented methods for adding, marking as read, and removing notifications. feat: Introduce common hooks for utility functions - Developed useHashRoute for hash-based routing. - Created useLocalStorage for managing local storage with TypeScript support. - Implemented useMediaQuery for responsive design handling. - Added useDebounce for debouncing values in state. feat: Implement donation impact calculation hook - Created useDonationImpact hook to calculate the impact of donations. - Added useFormValidation hook for form state management and validation. feat: Design main layout and page structure components - Developed MainLayout and PageShell components for consistent layout structure. - Created SectionHeader and Card components for reusable UI elements. feat: Build HomePage with impact statistics and service offerings - Implemented HomePage component with hero section, impact stats, and service cards. - Integrated tracking for donation and volunteer actions. feat: Add analytics utilities for tracking events - Created analytics utility for tracking page views and custom events. - Implemented donation and volunteer tracking functionalities. feat: Enhance helper functions for various utilities - Developed utility functions for impact calculation, formatting, validation, and debouncing.
66 lines
1.8 KiB
JSON
66 lines
1.8 KiB
JSON
{
|
|
"name": "miracles-in-motion-web",
|
|
"private": true,
|
|
"version": "1.0.0",
|
|
"type": "module",
|
|
"description": "Public website for Miracles In Motion 501(c)3 non-profit organization",
|
|
"scripts": {
|
|
"dev": "vite",
|
|
"build": "tsc && vite build",
|
|
"lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0",
|
|
"preview": "vite preview",
|
|
"deploy": "npm run build && gh-pages -d dist"
|
|
},
|
|
"keywords": [
|
|
"non-profit",
|
|
"charity",
|
|
"501c3",
|
|
"miracles-in-motion",
|
|
"community",
|
|
"donations",
|
|
"volunteers",
|
|
"react",
|
|
"vite",
|
|
"tailwind"
|
|
],
|
|
"author": "Miracles In Motion",
|
|
"license": "MIT",
|
|
"repository": {
|
|
"type": "git",
|
|
"url": "https://github.com/Miracles-In-Motion/public-web.git"
|
|
},
|
|
"homepage": "https://miraclesinmotion.org",
|
|
"dependencies": {
|
|
"@tensorflow/tfjs": "^4.22.0",
|
|
"date-fns": "^4.1.0",
|
|
"framer-motion": "^10.16.16",
|
|
"lucide-react": "^0.290.0",
|
|
"react": "^18.2.0",
|
|
"react-dom": "^18.2.0",
|
|
"react-helmet-async": "^1.3.0"
|
|
},
|
|
"devDependencies": {
|
|
"@tailwindcss/typography": "^0.5.10",
|
|
"@testing-library/jest-dom": "^6.9.1",
|
|
"@testing-library/react": "^16.3.0",
|
|
"@types/jest": "^30.0.0",
|
|
"@types/react": "^18.2.37",
|
|
"@types/react-dom": "^18.2.15",
|
|
"@typescript-eslint/eslint-plugin": "^6.10.0",
|
|
"@typescript-eslint/parser": "^6.10.0",
|
|
"@vitejs/plugin-react": "^4.1.0",
|
|
"autoprefixer": "^10.4.16",
|
|
"eslint": "^8.53.0",
|
|
"eslint-plugin-react-hooks": "^4.6.0",
|
|
"eslint-plugin-react-refresh": "^0.4.4",
|
|
"gh-pages": "^6.0.0",
|
|
"postcss": "^8.4.31",
|
|
"react-helmet-async": "^2.0.5",
|
|
"tailwindcss": "^3.3.5",
|
|
"terser": "^5.44.0",
|
|
"typescript": "^5.2.2",
|
|
"vite": "^7.1.9",
|
|
"vite-bundle-analyzer": "^1.2.3"
|
|
}
|
|
}
|