PUDUCAN-JIPMER/puducan-jipmer(新しいタブで開きます)
主要言語: TypeScript
🩺 Cancer patient management platform for ASHA workers, nurses & doctors — built for JIPMER's national study, sponsored by ICMR
- star 数
- 29
- watcher 数
- 1
- fork 数
- 93
- issue 数
- 48
- 最終更新
- 2026/07/16
主要言語: TypeScript
🩺 Cancer patient management platform for ASHA workers, nurses & doctors — built for JIPMER's national study, sponsored by ICMR
PUDUcherry CANcer Patient Management Dashboard
A modern healthcare platform built for ASHA workers, nurses, and doctors to manage cancer patient data efficiently — part of a national study led by JIPMER and sponsored by ICMR.
PuduCan is a healthcare management system designed to streamline cancer patient tracking and care coordination across hospitals in Puducherry. It enables ASHA workers, nurses, and doctors to:
This platform is part of a national research initiative to improve cancer care delivery and patient outcomes.
Different user roles have tailored dashboards and permissions:
| Dark Theme | Light Theme |
|---|---|
![]() |
![]() |
| Disease Report | Add Doctor/Nurse/ASHA |
|---|---|
![]() |
![]() |
| Add Hospital | Recover Patient |
|---|---|
![]() |
![]() |
| Doctor View | Nurse View | ASHA Mobile View |
|---|---|---|
![]() |
![]() |
![]() |
| Add Patient | Delete Patient |
|---|---|
![]() |
![]() |
Ensure you have the following installed:
Clone the repository
git clone https://github.com/lourduradjou/puducan-jipmer.git
cd puducan-jipmerInstall dependencies
pnpm install
Set up environment variables
Create a .env.local file in the root directory:
NEXT_PUBLIC_FIREBASE_API_KEY=your_api_key NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN=your_auth_domain NEXT_PUBLIC_FIREBASE_PROJECT_ID=your_project_id NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET=your_storage_bucket NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID=your_sender_id NEXT_PUBLIC_FIREBASE_APP_ID=your_app_id
Run the development server
pnpm run dev
Open http://localhost:3000 in your browser
Build for production
pnpm run build pnpm start
The assets/ folder contains a sample Excel file showing the correct format for importing patient data.
puducan-jipmer/
├── app/ # Next.js app directory
│ ├── api/ # API routes
│ ├── (auth)/ # Authentication pages
│ ├── (dashboard)/ # Dashboard pages
│ └── layout.tsx # Root layout
├── components/ # Reusable React components
│ ├── table/ # Table components
│ ├── forms/ # Form components
│ ├── dialogs/ # Modal dialogs
│ └── shared/ # Common components
├── lib/ # Utility functions & configs
│ ├── firebase.ts # Firebase initialization
│ ├── hooks/ # Custom React hooks
│ └── utils/ # Helper functions
├── styles/ # Global CSS & Tailwind
├── public/ # Static assets
├── assets/ # Sample data files
└── tests/ # Test files
The codebase is designed to be modular, maintainable, and scalable following modern software engineering principles.
GenericTable and GenericDialog, reducing code duplication across the application.useAuth: Manages user authentication state and provides user information to componentsuseTableData: Fetches and manages data table operations including pagination, searching, and filtering# Run all tests pnpm run test # Watch mode pnpm run test:watch # Coverage report pnpm run test:coverage
The application is built with performance as a top priority, utilizing modern web technologies and best practices for a fast, responsive user experience.
next/image component automatically optimizes images, serving modern formats like WebP and resizing for different devices.staleTime & cacheTime: Queries serve cached data while re-fetching in the background, keeping UI responsive. cacheTime keeps data cached even when unused.localStorage for Form Data: Form state is cached to prevent data loss during entry — reload the page and restore progress.| Level | Technology | Purpose |
|---|---|---|
| Bundle | Next.js Code Splitting | Reduce initial JS download |
| Assets | Image Optimization | Serve optimal image formats |
| API Calls | TanStack Query | Cache Firestore responses |
| State | Zustand | Share state across components |
| Local Data | localStorage | Persist form progress |
We welcome contributions from developers of all experience levels! Your work directly impacts cancer patient care across India.
Look for issues labeled good first issue — these are:
Check out v1.1 related issues here:
Fork the repository and create your feature branch
git checkout -b feature/your-feature-name
Make your changes with descriptive commits
git commit -m "feat: add new patient filter"Push to your fork and create a Pull Request
git push origin feature/your-feature-name
Describe your changes clearly in the PR description
For detailed guidelines, see CONTRIBUTING.md and ARCHITECTURE.md.
This project is licensed under the Apache License 2.0 — see the LICENSE file for details.
You are free to use, modify, and distribute this project, provided you include the original license and copyright notice.
questionMade with ❤️ for cancer patients and healthcare workers across India
⭐ If this project helped you, please consider giving it a star!