ariel-elkaslasi

Ariel ElkaslasiApplication Developer at SHRAGA V LTD

Full-stack developer, frontend first. By day, I build what people ask for. By night, I ruin my sleep schedule for side projects.

Kfar Saba, Israel--:--:--
NowWorking at SHRAGA V
Checking Spotify
Cover: I build the interface and everything under it.
Ariel Elkaslasi

Connect

Hit me up on LinkedIn.

DMs are open.Work, side projects, or a problem you can't hand to anyone else.

linkedin.com/in/ariel-elk-1b6769299
01Stack

What I build with.

The interface is where I'm strongest and where most of the time goes. The three layers under it are what keep it standing. Scroll slowly and each one draws itself.

01 / 04

The surface

What people actually touch. My strongest layer.

Fig. 01The surface

Worked example: the Now-playing card further down this page.

Spotify

Loading

Fetching the last track

Live from the Spotify API

One component, three states

right now: loading

  • loadingskeleton, exact size
  • playingequalizer + live badge
  • idlenothing playing

// NowPlaying.tsx

<div className="card p-5">

{loading && <Skeleton/>}

{isPlaying

? <Equalizer/>

: <Glyph/>}

<Image src={art} fill />

</div>

123
1

Loading is designed. A skeleton holds the album art's exact size, so nothing jumps when data lands.

2

UI is a function of state. The equalizer renders only while isPlaying is true, never toggled by hand.

3

Tailwind utilities only. The card is a handful of classes, no per-component stylesheet to drift.

Fig. 02The structure

Worked example: the same card, one request all the way out and back.

Browser

useSpotify()

polls every 30 s

Next.js route

/api/spotify

runs on the server

Spotify API

player · accounts

OAuth refresh token

GET
200 · 38 ms

Subscribers

hero pill · now card

→ one interval, shared

Server only

client id · secret

refresh token

type SpotifyState = {

isPlaying: boolean; title?: string }

imported by the route and the hook

123
1

One shared poller. Both widgets subscribe to the same 30-second fetch, so two cards never mean two requests.

2

Secrets stay on the server. The route refreshes the Spotify token; the browser only sees finished JSON.

3

One type on both sides. If Spotify changes shape, the build fails instead of a visitor seeing undefined.

Fig. 03The data

Worked example: users and orders, the shape underneath most products.

users
idPKint
emailtext
plantext
activebool
orders
idPKint
user_idFKint
totalnumeric
created_attimestamptz
1 → n

def active_users(conn):

return conn.execute(

"SELECT u.email, count(o.id)"

" FROM users u JOIN orders o"

" ON o.user_id = u.id"

" WHERE u.active GROUP BY 1"

).fetchall()

Index Scan · user_id_idx · 1.9 ms
123
1

Schema first. Foreign keys and constraints do the validation the app would otherwise fake, and never forget.

2

Python owns the query. The API returns rows; raw SQL never leaves the server.

3

Indexes are designed with the query. The plan is checked in DBeaver before the feature ships.

Fig. 04The shipping

Worked example: how a commit to this site reaches production.

git push3f2a9c1
vite build412 ms
tsc + lint0 errors
previewvercel
productionv2.0.0

Web

Vercel · edge cached

arielelkaslasi.com

Desktop

Tauri · same React UI

.exe · .dmg · .AppImage

123
1

Git is the changelog. Small commits, readable messages, a history that explains the product.

2

Green before merge. Every push builds, typechecks and lints; a red check never reaches production.

3

One interface, two targets. Vite bundles it for the web, Tauri wraps it as a desktop app.

0+

Years experience

0+

Projects built

0+

Technologies

Always seeking to improve and build something meaningful.

02Work

Selected projects.

9 projects · 2023 to 2026

Small personal projects I've built over the years. Not the impressive selection, just the ones I liked and had the most fun building.

03Experience

Where I've worked.

Where I've been paid to learn fast. Right now that's SHRAGA V LTD, where I own web apps and internal tools across the whole stack. If you want the long version, LinkedIn has the receipts.

  1. 01

    2026 to Present

    Full-time · Center District, Israel · On-site

    1. Application Developer

      Jun 2026 to Present · On-site

      Responsible for our web apps and internal tools across the whole stack. Frontend is my strongest area: React and Tailwind, plus the UI/UX design work behind it. I also build the backend in Python, design and maintain the relational database schema, and write the queries behind it. Beyond the code, I work directly with customers to define what they need, and with the rest of the team on reviews, shared standards, and reusable components.

    • React
    • Tailwind
    • UI/UX
    • Python
    • PostgreSQL
    • SQL
    • Front-End Development
    • Application Development
  2. 02

    2024 to 2026

    Part-time · 2 yrs · Israel

    1. Full Stack Developer

      Aug 2025 to Jun 2026 · Hybrid

      Full Stack Developer using Next.js to build modern web applications, handling frontend development and integrating backend functionality through third-party services and APIs.

    2. Frontend Developer

      Jul 2024 to Aug 2025 · Remote

      Contributed part-time as a Full Stack Developer focusing on frontend, helping build and maintain websites and web apps that support social impact initiatives in the Israeli online community. Grateful for the opportunity to give back to a mission I believe in, while continuing to grow my skills in a real-world environment with a supportive, purpose-driven team.

    • Next.js
    • React
    • TypeScript
    • Appwrite
    • Firebase
    • Tailwind
    • Third-party APIs
  3. 03

    2023 to Present

    Contract · Remote

    1. Freelance Developer

      2023 to Present · Remote

      Created custom web solutions for clients through freelance and contract work. Focused on building modern, responsive applications with attention to user experience and performance.

    • Web Development
    • Client Management
04Writing

From code fails to real stories.

This is the part of the site I care most about. It's the story of how I got here, with the mistakes left in, and I wrote it for the version of you that's just starting out. Give it eight minutes.

05Now

What's happening right now.

Not a static résumé. This panel shows you what's actually on my screen today: the time where I am, what I'm learning, what I just pushed, and what I'm listening to while doing it.

Based in

--:--:--

Kfar Saba, Israel

··· · Asia/Jerusalem

Status
Role
Application Developer @ SHRAGA V
Status
Employed full-time
Focus
Interfaces, full stack
Learning
PostgreSQL, DBeaver, schema design
Spotify

Loading

Fetching the last track

Recent public commits@arielldev
GitHub
Experience
5+ years
Public repos
20+
Languages
10+
View profile