Skip to main content

Overview

The photo gallery showcases powerful visual narratives from Dzaleka Refugee Camp, preserving stories of resilience, creativity, and daily life. Each photo captures a moment that speaks to the broader refugee experience while celebrating individual journeys.

Cultural Significance

Photography in Dzaleka serves multiple vital purposes:
  • Memory Preservation: Documents the lived experiences of refugees for future generations
  • Awareness Building: Shares the reality of refugee life with the outside world
  • Humanization: Puts faces and stories to statistics, breaking down stereotypes
  • Empowerment: Gives community members agency to control their own narratives
  • Cultural Documentation: Captures festivals, traditions, and daily life in the camp

Content Schema

The photo collection uses the following schema defined in src/content.config.ts:134-171:
const photoSchema = z.object({
  title: z.string(),
  description: z.string(),
  date: z.union([
    z.string(),
    z.number(),
    z.date()
  ]).transform((val) => {
    if (val instanceof Date) return val;
    const date = new Date(val);
    if (isNaN(date.getTime())) {
      throw new Error(`Invalid date: ${val}`);
    }
    return date;
  }),
  image: z.string().refine((val) => {
    // Accept both relative paths and absolute URLs
    if (val.startsWith('/images/')) return true;
    try {
      new URL(val);
      return true;
    } catch {
      return false;
    }
  }, "Image must be either a path starting with '/images/' or a valid URL"),
  photographer: z.object({
    name: z.string(),
    bio: z.string().optional(),
    instagram: z.string().optional(),
    website: z.url().optional()
  }),
  contributor: z.string().optional(),
  tags: z.array(z.string()).optional(),
  featured: z.boolean().optional(),
  location: z.string().optional(),
  gallery: z.array(z.string()).optional()
});

Example Photo Entry

Here’s a real example from src/content/photos/Andy.md:
---
title: "From Survival to Innovation: Andy's Journey in Dzaleka"
description: "Escaping his past as a child soldier, Andy found refuge in Dzaleka, reunited with his mother, and discovered coding. Now, he dreams of growing his messaging app into something greater."
photographer:
  name: "Badre Bahaji"
  instagram: "badrebahaji"
  website: "https://mw.linkedin.com/in/badre-bahaji-1bb67942"
  bio: "Photography based in Uganda"
contributor: "badre-bahaji"
image: "https://www.wfp.org/sites/default/files/styles/media_embed/public/2021-06/Malawi%205.jpg?itok=NkB_eCtY"
date: "2021-06-18"
tags: ["Former Child Soldier", "Refugee Resilience", "Family Reunion","Coding Skills"]
featured: true
location: "Dzaleka Refugee Camp"
---

## About This Photo

Andy was only 16 when he arrived in Malawi after escaping an armed group where he was recruited as a child soldier. Fortunately, he was reunited with his mother three months later in Dzaleka and together they began their new life. He enrolled in vocational skills training, where he learned how to code. "I created my own messaging app. Initially, it was only for my girlfriend and I, but I hope it will take off one day," says Andy.

Contributing Photos

Submission Guidelines

1

Capture the Story

Photos should tell a meaningful story about life in Dzaleka, whether it’s about resilience, creativity, community, daily life, or cultural traditions.
2

Obtain Consent

Always get clear consent from subjects in the photo. Explain how the image will be used and ensure they’re comfortable with public sharing.
3

Write a Compelling Description

The description should provide context, tell the story behind the image, and capture the subject’s voice when possible.
4

Credit the Photographer

Include full photographer attribution with name, social media handles, and a brief bio.

Creating a Photo Entry

  1. Create the markdown file in src/content/photos/:
touch src/content/photos/descriptive-filename.md
  1. Add the frontmatter with all required fields:
---
title: "Compelling Photo Title"
description: "A powerful description that tells the story"
photographer:
  name: "Photographer Name"
  bio: "Brief bio"
  instagram: "handle"
  website: "https://photographer-site.com"
contributor: "contributor-slug"
image: "/images/photo-filename.jpg"
date: "2024-03-15"
tags: ["Relevant", "Tags", "Here"]
featured: false
location: "Dzaleka Refugee Camp"
---
  1. Write the photo story in markdown below the frontmatter:
## About This Photo

Tell the story behind the photograph. Include quotes from the subject when possible, provide context about what's happening in the image, and share any relevant background information.

Image Guidelines

Respect and Dignity: All photos must treat subjects with dignity and respect. Avoid images that could perpetuate negative stereotypes or exploit vulnerability.

Image Quality Standards

  • Resolution: Minimum 1200px on the longest side
  • Format: JPG or PNG
  • Size: Optimized for web (generally under 500KB)
  • Orientation: Any (portrait, landscape, or square)

Storage Options

Local Storage (recommended for faster loading):
image: "/images/photos/your-photo.jpg"
Place the file in public/images/photos/ External URLs (useful for existing hosted images):
image: "https://example.com/image.jpg"
For photos with multiple related images:
image: "/images/main-photo.jpg"
gallery:
  - "/images/gallery-1.jpg"
  - "/images/gallery-2.jpg"
  - "/images/gallery-3.jpg"

Photo Tags

Use descriptive tags to help users discover photos. Examples:
  • Life & Community: "Daily Life", "Community", "Family", "Children"
  • Arts & Culture: "Cultural Traditions", "Festivals", "Performance", "Art"
  • Themes: "Resilience", "Hope", "Education", "Innovation"
  • Events: "Tumaini Festival", "World Refugee Day"
  • Demographics: "Youth", "Women", "Elders"

API Integration

The photo collection is accessible through the API at /api/photos:
// src/pages/api/photos.ts
import type { APIRoute } from 'astro';
import { createGetHandler, createPostHandler } from '../../utils/api-utils';

export const GET: APIRoute = createGetHandler('photos');
export const POST: APIRoute = createPostHandler('photos');

Fetching Photos

// Get all photos
fetch('/api/photos')
  .then(res => res.json())
  .then(photos => console.log(photos));

// Photos are returned sorted by date with featured items first
Set featured: true in the frontmatter to highlight important photos:
featured: true
Featured photos:
  • Appear first in gallery listings
  • May be highlighted on the homepage
  • Should represent exceptional storytelling or particularly impactful images

Ethical Considerations

Informed Consent

Always obtain clear, informed consent from subjects. Explain how photos will be used and where they’ll be published.

Child Safety

Extra care must be taken with photos of children. Always get parental/guardian consent and avoid full names when possible.

Vulnerability

Avoid exploitative imagery that focuses on suffering. Balance reality with dignity and respect.

Context

Provide sufficient context so photos aren’t misinterpreted. Let subjects tell their own stories.

Best Practices

  1. Tell Complete Stories: The description should provide enough context for viewers to understand the significance of the image
  2. Center Voices: Include direct quotes from subjects whenever possible
  3. Avoid Stereotypes: Show the full complexity of refugee life, including joy, creativity, and achievement
  4. Update Regularly: Keep the gallery fresh with new photos that capture evolving stories
  5. Create Connections: Use tags thoughtfully to help users discover related content
  6. Credit Properly: Always give full credit to photographers and acknowledge contributors

Example: Creating a Photo Entry

Here’s the complete process:
# 1. Create the file
touch src/content/photos/tumaini-festival-2024.md

# 2. Add your image to public directory
cp ~/Downloads/festival-photo.jpg public/images/photos/tumaini-2024.jpg
---
title: "Joy and Unity at Tumaini Festival 2024"
description: "Dancers from multiple countries come together on stage, showcasing the rich cultural diversity of Dzaleka through traditional and contemporary performances."
photographer:
  name: "Sarah McLean"
  instagram: "dzalekaonline"
  website: "https://sarahamaclean.weebly.com"
  bio: "Documentary photographer focusing on refugee stories and child welfare"
contributor: "sarah-mclean"
image: "/images/photos/tumaini-2024.jpg"
date: "2024-02-15"
tags: ["Tumaini Festival", "Dance", "Cultural Unity", "Performance", "Community"]
featured: true
location: "Dzaleka Refugee Camp"
---

## About This Photo

The annual Tumaini Festival brings together the diverse communities of Dzaleka in a celebration of culture, art, and resilience. This year's festival featured over 50 performers from seven different countries, each bringing their unique traditions to the stage.

In this moment, the Fighters Dance Crew performs a fusion of Afro Dance and Hip Hop, drawing cheers from hundreds of community members. "Dance gives us hope," explains Van Peace, the crew's lead dancer. "When we perform, we're not just refugees—we're artists sharing our culture with the world."

The Tumaini Festival has become a cornerstone event in Dzaleka, attracting visitors from across Malawi and raising awareness about the talents and contributions of the refugee community.