Lunas is a full-stack nonprofit operations platform built for the INTEX II case and organized around the three class tracks: product/design delivery (IS 401), enterprise web application delivery (IS 413/414), and end-to-end machine learning pipelines (IS 455). This README is intentionally written for TAs so grading can be done quickly with direct evidence links.
- Live site: https://lunas-project.site
- GitHub repo root: ./
- Security proof matrix: BusinessContext/SECURITY_POC.md
- Grader credentials: BusinessContext/TEST_CREDENTIALS.md
- Requirements checklist: BusinessContext/REQUIREMENTS.md
- IS 401 Trello board: https://trello.com/b/iR8HVFAN/intex-ii
- IS 401 FigJam board: https://www.figma.com/board/DcHf7CCSml5QtZycuQBqF9/2026W-INTEX---Group-4-7?node-id=0-1&t=xScIqW6SmGTps8pp-1
git clone <repo-url>
cd INTEX-II- .NET 10 SDK
- Node.js 20+
- SQL Server instance (local or cloud)
Set runtime secrets/environment variables for local execution (do not commit secrets):
ConnectionStrings__DefaultConnectionGenerateDefaultIdentityAdmin__PasswordGenerateDefaultIdentityDonor__PasswordGenerateDefaultIdentityMfa__Password- Optional for full feature set:
Authentication__Google__ClientId,Authentication__Google__ClientSecret,Stripe__SecretKey,Stripe__WebhookSecret,Gemini__ApiKey,Resend__ApiKey
Config placeholders are intentionally blank in tracked config: Backend/appsettings.json
Create Frontend/.env with:
VITE_API_BASE_URL=https://localhost:5200
VITE_STRIPE_PUBLISHABLE_KEY=<optional-test-key>Usage is defined in:
Backend:
cd Backend
dotnet restore
dotnet build
dotnet runFrontend:
cd Frontend
npm install
npm run devLocal defaults:
- Backend: https://localhost:5200 (Backend/Properties/launchSettings.json)
- Frontend: http://localhost:4200 (Frontend/vite.config.ts)
Use seeded accounts documented in BusinessContext/TEST_CREDENTIALS.md.
Use Stripe in test mode on https://lunas-project.site/donate (no real charges).
| Field | Value |
|---|---|
| Card number | 4242 4242 4242 4242 |
| Expiry | 12/34 |
| CVC | 123 |
| ZIP | 10001 |
Official Stripe references:
- Test card docs: https://docs.stripe.com/testing#cards
- Test mode overview: https://docs.stripe.com/test-mode
- Webhook testing and Stripe CLI: https://docs.stripe.com/webhooks/test
IS 401 was submitted as a separate deliverable package. For IS 401 grading, TAs should use the FigJam board as the source of truth for requirements evidence:
Test links are intentionally left blank for IS 413 per rubric instructions.
This section includes direct test links (the only class where test links are filled).
Test links are intentionally left blank for IS 455 per rubric instructions.
Here are the links but in order for the pipelines to have access to the seed data, they must be run in the full repo. Navigate to the ml-pipelines folder from the full repo, then run (so do not download them separately and run them).
- MachineLearning/ml-pipelines/donor-churn-classifier.ipynb
- MachineLearning/ml-pipelines/social-media-donation-driver.ipynb
- MachineLearning/ml-pipelines/campaign-roi-analyzer.ipynb
- MachineLearning/ml-pipelines/resident-risk-predictor.ipynb
- MachineLearning/ml-pipelines/education-progress-predictor.ipynb
- MachineLearning/ml-pipelines/visitation-outcome-predictor.ipynb
- MachineLearning/ml-pipelines/safehouse-performance-analyzer.ipynb
- MachineLearning/Piplines/reintegration-readiness.ipynb
Summary and synthesis:
| Requirement | File links | Site links | What to show |
|---|---|---|---|
| Problem framing is clear and business-relevant; predictive vs explanatory is explicit | MachineLearning/ANALYTICS_STRATEGY.md, MachineLearning/pipeline-results-summary.md | https://lunas-project.site/admin/reports | In each notebook, show business question, stakeholder, and modeling objective type. |
| Data acquisition/preparation/exploration is thorough and reproducible | MachineLearning/ml-pipelines, MachineLearning/requirements.txt, MachineLearning/refresh_all_pipelines.py | Run notebook cells top-to-bottom and show reusable prep/feature engineering steps. | |
| Modeling and feature selection are appropriate and justified | MachineLearning/ml-pipelines/donor-churn-classifier.ipynb, MachineLearning/ml-pipelines/resident-risk-predictor.ipynb, MachineLearning/ml-pipelines/visitation-outcome-predictor.ipynb, MachineLearning/ml-pipelines/safehouse-performance-analyzer.ipynb | Show model comparisons, selected features, and why chosen models fit each problem (including expansion planning). | |
| Evaluation and selection use appropriate metrics/validation and business interpretation | MachineLearning/pipeline-results-summary.md | https://lunas-project.site/admin/reports | Show train/test or cross-validation outputs and convert metrics into operational decisions. |
| Deployment and integration into web application provide end-user value | Backend/Controllers/PipelineResultsController.cs, Frontend/src/pages/admin/reports.tsx, Frontend/src/pages/admin/social-media.tsx, Frontend/src/pages/admin/expansion.tsx | https://lunas-project.site/admin/reports, https://lunas-project.site/admin/social-media, https://lunas-project.site/admin/expansion | Show model output surfaced in app dashboards/recommendations and tied to business actions. |
cd Backend.Tests
dotnet test --filter Security