Skip to content

Latest commit

Β 

History

History
156 lines (107 loc) Β· 4.33 KB

File metadata and controls

156 lines (107 loc) Β· 4.33 KB

🌐 Tech4R Website

Tech4R is a digital initiative focused on disaster resilience through technology. This website showcases our mission, projects, events, and ways to get involved.


βš™οΈ Tech Stack


🌍 Environments


πŸš€ Getting Started (Local Setup)

1. Clone the repository

git clone https://github.com/your-org/tech4r.git
cd tech4r

2. Install dependencies

npm install

3. Create your .env.local file

Create a .env.local file at the root of the project and add the following:

NEXT_PUBLIC_SUPABASE_URL=https://your-project-id.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY=your-anon-public-api-key

βœ… These values will be shared with the internal dev team.


🧠 Supabase Setup

We are using a shared Supabase instance.

  • βœ… You do not need to create your own instance.
  • βœ… You do not need to seed data locally.
  • βœ… You can read/write using the credentials above.
  • ❗ Ensure RLS (Row Level Security) is disabled on all necessary tables.

If you're unsure which tables are affected, ask the Scrum Master for the Supabase SQL schema or admin access.


πŸ’» Run the Development Server

npm run dev

Then visit http://localhost:3000 in your browser.


🧩 Project Structure

tech4r/
β”œβ”€β”€ .next/                  # Next.js build output
β”œβ”€β”€ node_modules/          # Node.js dependencies
β”œβ”€β”€ public/                # Static files
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ app/              # Next.js app directory (App Router)
β”‚   β”‚   β”œβ”€β”€ globals.css   # Global styles
β”‚   β”‚   β”œβ”€β”€ layout.tsx    # Root layout component
β”‚   β”‚   β”œβ”€β”€ page.tsx      # Home page component
β”‚   β”‚   └── favicon.ico   # Site favicon
β”‚   └── components/         # Reusable UI components
β”‚   └── lib/              # Utility functions and shared code
β”‚       └── supabaseClient.ts  # Supabase client configuration
β”œβ”€β”€ .gitignore            # Git ignore rules
β”œβ”€β”€ eslint.config.mjs     # ESLint configuration
β”œβ”€β”€ next-env.d.ts         # Next.js TypeScript declarations
β”œβ”€β”€ next.config.ts        # Next.js configuration
β”œβ”€β”€ package-lock.json     # Dependency lock file
β”œβ”€β”€ package.json          # Project metadata and dependencies
β”œβ”€β”€ postcss.config.mjs    # PostCSS configuration
β”œβ”€β”€ README.md             # Project documentation
└── tsconfig.json         # TypeScript configuration

πŸ“‘ Supabase Client (src/lib/supabaseClient.ts)

We use a centralized Supabase client instance:

import { createClient } from '@supabase/supabase-js';

const supabase = createClient(
  process.env.NEXT_PUBLIC_SUPABASE_URL!,
  process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY!
);

export default supabase;

πŸ§ͺ Testing & Validation

The site should be verified for the following:

  • βœ… Mobile responsiveness
  • βœ… SEO optimization (meta tags, alt texts, etc.)
  • βœ… Cross-browser compatibility
  • βœ… Post-launch: Analytics setup & feedback collection

🧬 Database Tables (Supabase)

Table Name Description
projects Project cards (name, description, etc.)
categories Categories (each project belongs to one)
events Past/upcoming events
event_types Reference table for event type (training, hackathon, etc.)
volunteers Testimonials & open volunteer roles
partners Partner logos & contact info

You do not need to recreate these tables locally.


πŸ“¬ Questions or Issues?

For access or help with setup, contact the Scrum Master at josue.ushindi@undp.org


πŸ“Œ Project Info

  • πŸ’‘ Project Name: Tech4R β€” Digital Solutions for Disaster Resilience
  • πŸ› οΈ Lead Tech Stack: Next.js + Supabase + Tailwind CSS
  • 🌍 Purpose: Showcase mission, events, and enable collaboration via volunteering & partnerships.