Files
ngo-toolkit/app/grant-tools/page.tsx
T
2026-03-18 18:26:24 +08:00

137 lines
6.2 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
const tools = [
{
title: 'Logframe Generator',
href: '/logframe',
desc: 'Structured goal → outcome → output → activity matrices aligned to donor requirements. Includes OVIs and means of verification.',
inputs: 'Project title, sector, geography, donor, objectives',
sample: 'A 4-level logframe with SMART indicators, assumptions column, and verification sources — ready for annexing.',
},
{
title: 'SMART Indicators',
href: '/smart-indicators',
desc: 'Evaluation-ready indicators that survive panel review. Auto-aligned to your logframe outputs.',
inputs: 'Logframe or project description, M&E framework preferences',
sample: '812 indicators per output with baselines, targets, data sources, and collection frequency.',
},
{
title: 'Theory of Change',
href: '/theory-of-change',
desc: 'Inputs → activities → outputs → outcomes → impact. Assumptions and evidence gaps surfaced clearly.',
inputs: 'Problem statement, target population, intervention design',
sample: 'A narrative ToC with causal pathways, assumption testing notes, and a visual summary.',
},
{
title: 'Funder Rewriter',
href: '/funder-rewriter',
desc: 'Reshape existing proposals to match a new funder\'s priorities, tone, and structure — without losing your voice.',
inputs: 'Existing proposal text, target funder name or guidelines',
sample: 'A rewritten proposal section with tracked changes summary and alignment notes.',
},
];
const comparison = [
{ task: 'Build a logframe from scratch', manual: '23 days', toolkit: '< 2 minutes' },
{ task: 'Write SMART indicators', manual: '46 hours', toolkit: '30 seconds' },
{ task: 'Draft a theory of change', manual: '12 days', toolkit: '< 2 minutes' },
{ task: 'Rewrite proposal for new funder', manual: '1 day', toolkit: '45 seconds' },
];
const quotes = [
{ text: 'I used to dread logframe season. Now I finish them over lunch.', author: 'Programme Manager, East Africa regional NGO' },
{ text: 'The SMART indicators it generates are better than what our M&E team was producing manually.', author: 'Grants Lead, UK-based INGO' },
{ text: 'We rewrote a USAID proposal for DFID in under a minute. It took three rounds of review last time.', author: 'Senior Grant Writer, health sector NGO' },
];
export default function GrantToolsPage() {
return (
<>
{/* Hero */}
<section className="bg-white">
<div className="max-w-6xl mx-auto px-6 py-24">
<p className="text-xs tracking-widest font-semibold text-accent uppercase mb-3">Grant tools</p>
<h1 className="text-4xl font-bold mb-4">Four tools. Zero fluff.</h1>
<p className="text-muted max-w-lg mb-16">
Each tool solves one specific grant-writing problem. Describe your project, get a professional draft, refine and export.
</p>
{/* Tool cards */}
<div className="grid md:grid-cols-2 gap-6">
{tools.map((t) => (
<div key={t.href} className="border border-gray-200 rounded-md p-8">
<h3 className="text-xl font-bold mb-3">{t.title}</h3>
<p className="text-muted text-sm mb-4">{t.desc}</p>
<div className="space-y-3 mb-6">
<div>
<span className="text-xs font-semibold uppercase text-accent tracking-wide">Inputs</span>
<p className="text-sm text-muted">{t.inputs}</p>
</div>
<div>
<span className="text-xs font-semibold uppercase text-accent tracking-wide">Sample output</span>
<p className="text-sm text-muted">{t.sample}</p>
</div>
</div>
<a href={t.href} className="text-accent font-medium text-sm hover:text-accent-dark transition-colors">
Try it free
</a>
</div>
))}
</div>
</div>
</section>
{/* Comparison */}
<section className="bg-warm">
<div className="max-w-6xl mx-auto px-6 py-24">
<h2 className="text-3xl font-bold mb-12 text-center">Manual vs. Toolkit</h2>
<div className="max-w-2xl mx-auto">
<table className="w-full text-sm">
<thead>
<tr className="border-b border-gray-300">
<th className="text-left py-3 font-semibold">Task</th>
<th className="text-center py-3 font-semibold">Manual</th>
<th className="text-center py-3 font-semibold text-accent">Toolkit</th>
</tr>
</thead>
<tbody>
{comparison.map((row, i) => (
<tr key={i} className="border-b border-gray-200">
<td className="py-3 text-muted">{row.task}</td>
<td className="py-3 text-center text-muted">{row.manual}</td>
<td className="py-3 text-center font-semibold text-accent">{row.toolkit}</td>
</tr>
))}
</tbody>
</table>
</div>
</div>
</section>
{/* Practitioner quotes */}
<section className="bg-white">
<div className="max-w-6xl mx-auto px-6 py-24">
<h2 className="text-3xl font-bold mb-12 text-center">From the field</h2>
<div className="grid md:grid-cols-3 gap-6">
{quotes.map((q, i) => (
<div key={i} className="border-l-2 border-accent pl-6">
<p className="italic text-muted mb-3">"{q.text}"</p>
<p className="text-xs text-gray-500">{q.author}</p>
</div>
))}
</div>
</div>
</section>
{/* CTA */}
<section className="bg-dark text-white">
<div className="max-w-6xl mx-auto px-6 py-24 text-center">
<h2 className="text-3xl font-bold mb-4">Pick a tool. Finish the document.</h2>
<p className="text-gray-300 mb-8">No signup required for your first document.</p>
<a href="/logframe" className="inline-block bg-accent text-white font-medium px-6 py-3 rounded-md hover:bg-accent-dark transition-colors">
Try free
</a>
</div>
</section>
</>
);
}