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 →