Frontend developer based in Tallinn, Estonia.
I build clear, responsive websites and help small businesses automate the routine — enquiries, emails, spreadsheets. Most of what is here is written without a framework: semantic HTML, modular SCSS and vanilla JavaScript, with Vite or Gulp where a build step earns its place.
Open to freelance work.
An installable PWA for finding public drinking water points in Tallinn. Pulls 78 real locations live from the Tallinn GIS ArcGIS REST service, falls back to the last successful snapshot when the service is down, and caches the app shell in a service worker so the list and point cards stay available offline.
Map and list share one result set; markers separate status by colour and glyph. Geolocation sorts by distance and degrades to manual search when permission is refused. Search covers districts, addresses and online geocoding via Nominatim. Routing deep-links into Apple Maps on iOS and Google Maps elsewhere. Interface in Estonian, English and Russian.
Leaflet · Vite · vanilla JS · service worker · localStorage
A Meta Quest 2 landing page with no dependencies and no build step. Every layout — navbar, feature tabs, games row, the "In the box" mosaic — is CSS Grid rather than floats or positioning, responsive down to 320px across seven breakpoints.
The dark theme follows prefers-color-scheme and is driven by four semantic custom
properties, so switching themes means overriding variables rather than hunting individual
rules. The tabs are a proper tablist / tab / tabpanel structure with aria-selected,
roving tabindex and arrow / Home / End keyboard navigation.
HTML · CSS Grid · CSS animations · vanilla JS · accessibility
A responsive storefront for a blanket shop: home, catalog, product page and cart. Built on Vite with a modular SCSS architecture (base / blocks / ui / helpers, BEM naming) and six small vanilla JS modules — cart state, catalog view switching, product detail, quick add and the slider.
Images ship as AVIF with responsive sizes; PostCSS converts px to rem across the build.
Vite · SCSS · BEM · vanilla JS · Swiper
| Project | What it is | Stack |
|---|---|---|
| Ceramic Soul | Multi-page site for a ceramics studio | Vite · SCSS · JS |
| Monovision Studio | Photography studio landing page | Vite · CSS · JS |
| Gaming Club | Game store page laid out with CSS Grid | Gulp · SCSS · CSS Grid |
| Ballons | Hot-air balloon tours over old Tallinn | SCSS · HTML · CSS |
| Burger House | Burger restaurant landing page | HTML · CSS · JS |
| GB-store | Five-page fashion store front-end | HTML · CSS |
Markup and styling — semantic HTML5, CSS Grid, Flexbox, SCSS, BEM, responsive and
mobile-first layouts, prefers-color-scheme theming, accessibility (ARIA, keyboard
navigation)
JavaScript — vanilla ES6+, DOM APIs, Geolocation, localStorage, service workers and PWA manifests, Leaflet, Swiper; TypeScript on smaller projects
Tooling — Vite, Gulp, PostCSS, npm, Git, GitHub Actions and Pages, Vercel
Also — WordPress and WooCommerce, and automating everyday small-business processes
- Email — anna.tolstoukhova@hotmail.com
- LinkedIn — anna-tolstoukhova
- Portfolio — tecna-developer.github.io/portfolio-ai


