01 / WEB DEVELOPMENT
Fotograf Anja
A considered digital home for a photography business. Built to let the photographs do the talking.
Visit live site
The objective
Develop and maintain a photography website that presents a portfolio clearly and makes it easy for visitors to get in touch. The work brings together responsive layouts, image-heavy galleries, and the practical needs of a live business website.
My contribution
- Developed and maintained the website using Next.js, TypeScript, and Tailwind CSS.
- Worked on responsive design, portfolio galleries, and image optimization.
- Improved SEO and performance, and worked on contact forms and validation.
- Carried out security hardening as part of maintaining the website.
- Deployed updates through GitHub and Vercel.
Technical challenges & approach
Photographs that work across screen sizes
An image-heavy portfolio needs to balance image quality with loading cost. I worked on responsive layouts and image optimization. The public site serves images through Next.js image optimization with responsive image sizes, and uses lazy loading for parts of the gallery.
A clear route from browsing to contact
The contact form combines browser checks with server-side Zod validation. The implementation limits request size, validates fields, escapes text for email HTML, and reports success only after a confirmed response. These controls make the boundary between user input and message delivery explicit.
Maintaining a published website
The site is deployed through GitHub and Vercel. Metadata and canonical URLs support discoverability. The reviewed code includes request-origin checks, bounded input handling, and controlled error responses. Automated regression and security scripts are present; this portfolio review did not rerun them or measure performance gains.
Learning focus
Working on a published website connects interface design with the day-to-day concerns of image delivery, accessibility, contact flows, performance, and maintenance.
Project scope
Website development and ongoing maintenance. The screenshot and live link show the public site, which is still being updated. Photography belongs to Fotograf Anja. Private source code and contact submissions are not included.