← Back to projects

Case study · Website · Historical archive

Fototeca La Pelada

A digital, multilingual and self-managed photo archive for the memory of a town.

Visit the site ↗
100/100
on PageSpeed, in all 4 categories
~700
historical photographs
4
languages
0
CLS on mobile and desktop
Client
Fototeca La Pelada (non-profit community project)
Location
La Pelada, Santa Fe, Argentina
Start
August 2026
Services
Custom web development · Content migration · UX/UI design · Cloud infrastructure · Performance optimization
Technologies
  • Next.js 16
  • React 19
  • TypeScript
  • Tailwind CSS 4
  • PostgreSQL
  • Neon
  • Drizzle ORM
  • Cloudflare R2
  • Auth.js
  • Google OAuth
  • Google Drive API
  • next-intl
  • sharp
  • Swiper
  • Vercel
  • GitHub Actions

The client

Fototeca La Pelada is the historical photo archive of La Pelada, a town in the province of Santa Fe, Argentina. It was created by two history teachers, Lautaro and Marcos Tesolín, who gathered photographs lent by local families, each with its caption and credit. Today the collection holds about 700 images and keeps growing.

The project

The archive lived on Google Sites and had outgrown it. We built a custom web application that turns it into an archive people can search, cite and share, in four languages. Its authors run it on their own, without touching code.

The challenge

An archive that couldn't be searched or cited
On Google Sites no photograph had its own address. There was no search, and captions were loose text under each image.
An audience spread around the world
Much of the interest comes from descendants of the town's immigrant families, who live abroad. The archive had to be readable in their language.
Autonomy for the people who care for the collection
The authors needed to upload photos, fix captions, order sections and translate content on their own.
Preserving without overpaying
The high-resolution originals had to stay safe in Google Drive. But Drive is no CDN, and a photo gallery mostly consumes bandwidth.

Our solution

A browsable, indexable archive
Every photograph and every section has its own permanent link, with social sharing cards. There is full-text search and filters by caption, credit and section, in every language.
Four languages
The site is in Spanish, English, French and Italian. Translations are managed from the admin panel, and Spanish is shown whenever one is missing.
A purpose-built admin panel
A Spanish-language panel with Google sign-in. From there the authors edit captions, reorder sections, move photos between sections, translate, import scans straight from Google Drive and take a photograph off the site.
Two homes for every image
Google Drive keeps the originals. Cloudflare R2 serves only the optimized versions the site uses, with no egress fees.
Takedowns without deleting anything
An unpublished photo disappears from the site within seconds and comes back with one click.

How we worked

The panel's users are historians, not engineers. So every design decision started from how they already worked: they keep uploading their scans to Google Drive as always, and the system takes care of the rest.

We worked in short, incremental deliveries, each one verified against the real services, so the archive was online early and kept growing without interruptions.

The results

100/100 on PageSpeed Insights
In performance, accessibility, best practices and SEO, measured on mobile.
1.8 s LCP and 0 CLS
On a mid-range phone over slow 4G, which is how the archive is really read.
About 700 photographs
Each with its own link, searchable and citable.
4 languages
For the town's community at home and abroad.
Self-sufficient authors
All content management happens in the admin panel.
Minimal running costs
In line with a non-profit project.

Conclusion

Fototeca La Pelada went from a static page that was hard to maintain to a modern historical archive, fast and reachable from anywhere in the world. The project shows that a small institution, or a community project, can have a platform with first-rate technical standards without it being expensive or complex to run.

Technical details

Application stack
Next.js 16 with the App Router and React Server Components, TypeScript and Tailwind CSS 4.
Data
Serverless PostgreSQL on Neon with Drizzle ORM and versioned migrations. Full-text search is native to Postgres, per language.
Rendering and caching
The public site is fully prerendered, sitemap included. Every change made from the panel refreshes only the affected pages.
Images
Optimized versions are generated with sharp on import and served from Cloudflare R2. Every photo has its aspect ratio reserved so the page doesn't shift while loading.
Performance
The map and videos load only when the user asks for them. Fonts are self-hosted, so the site makes no requests to Google.
Security
Google OAuth sign-in plus an allowlist of users checked on every request, so revoking someone's access is immediate. Imported files are validated by their content, not their extension.
Quality and CI/CD
Continuous integration on GitHub Actions, automated checks against the real services and gitleaks to keep credentials from leaking. Deployed on Vercel.

Do you have an archive, a collection or a project that needs its own platform? Let's talk →

Have a project in mind?

Tell us what you need and we will reply within 24 hours with next steps.

What do you need?
pipacodestudio@gmail.com

Santa Fe, Argentina