Portfolio
Edition 2026

Digital Game Design student
→ transitioning to full-stack

Open to
software internships

Game design taught me how things should feel. Software engineering is teaching me how to make them hold.

Emir Şeren

Click it, then ←→↑

(00)PracticeHow I learn

I learn software by building1 things, breaking2 them, and understanding3 why they work.

  1. 1Small projects with a clear goal. StockFlow is how I practised JavaScript.
  2. 2Bugs teach me the most. I try to find the cause before I change anything.
  3. 3I want to know what the code I use is doing, including code written with AI tools.

I’m working toward full-stack development one step at a time: JavaScript first, then TypeScript, React and the back end. Along the way I care about the parts people skip — the empty state, the error message, the focus ring.

Things I’m picky about

  • Kerning in buttons
  • Loading states
  • Focus rings
  • Naming things
  • The 8 pixels nobody measured
(01)Selected workInteractive mockups

Four projects and a playground.

These are projects I’ve worked on while learning software development. Each preview below is a simplified re-creation of the real app, running on sample data — try them.

01

StockFlow

Inventory dashboard · JavaScript practice

The project I practised JavaScript with.

A small inventory dashboard: add products, change stock with + and −, and search, filter and sort the list. Built with HTML, CSS and plain JavaScript while I was learning the language.

Status
Finished
Highlight
One array, one sync function
Project stack
HTML, CSS, JavaScript, LocalStorage
02

DevFlow

Issue tracker, built with AI tools

What a larger full-stack app looks like.

An AI-assisted full-stack issue and sprint tracker with projects, roles, authentication, Kanban workflows, comments, activity feeds, testing and deployment.

Status
Live demo on Render
Highlight
Permissions are checked on the server
Project stack
React, TypeScript, React Router, TanStack Query, Node.js, Express, PostgreSQL, Prisma, Zod, Vitest, Docker, GitHub Actions
03

Follow Clarity

Instagram follow analyzer · privacy-first

Your data stays in your browser.

Upload your own Instagram data export and see who doesn’t follow you back, who you don’t follow back, and your mutuals. Everything is processed locally — no login, no scraping, no upload.

Status
Live on Netlify
Highlight
No server at all
Project stack
Next.js, React, TypeScript, Tailwind CSS, JSZip, Vitest
04

Crypto Technical Analysis

Windows desktop app · market analysis

Charts, indicators and backtests on the desktop.

A Windows desktop app for technical analysis of Binance USDT-M futures, using public market data with no API key: charts, indicators, trade setups, backtesting and desktop notifications.

Status
Runs locally on Windows
Highlight
Public data only
Project stack
Python, PyQt5, pandas, NumPy, matplotlib, mplfinance, requests, plyer, pytest
&

Interactive Playground

Experiments in motion, physics & game feel

Where the square came from.

Small experiments with physics, game mechanics and interfaces — including the engine behind the square at the top of the page.

Go to the playground
(02)AboutGame design → software

Translation, not a restart.

I study Digital Game Design, with full-stack development as my goal.

People sometimes ask whether that makes the degree a detour. I don’t think so. A lot of what I learned designing games carries over to building software — I’m learning the new names for it, and the tools that go with them.

In game designIn softwareWhat carries over
Systems designArchitectureRules that interact without breaking each other.
PlaytestingUser testing & debuggingWatching someone struggle with your thing, and not explaining it to them.
Game feelInteraction designTiming, feedback, response. The gap between “works” and “feels right”.
Level pacingInformation flowWhat someone sees first, what they learn next, and when.
PrototypingIterationMake it ugly, make it work, then make it good. In that order.
BalancingTrade-offsEvery number you change moves three others.
(02.1)Rules I work by
  1. R01Make it work. Make it clear. Then make it fast.
  2. R02Every state gets designed: empty, loading, error, done.
  3. R03Motion should explain something, or it should go.
  4. R04Name things for the next person. Usually that’s me.
(02.2)NowAutumn 2026
Studying
Digital Game Design, at university.
Learning
TypeScript, now that the JavaScript fundamentals are done.
Looking for
An internship in software development.
(02.3)ToolkitCurrent skills first

What I use now, and what I’m learning next.

A

Using now

What I build with today.

  • HTML
  • CSS
  • JavaScript
  • Git
  • GitHub
B

Learning next

In this order, after JavaScript. Not skills yet.

  • TypeScript
  • React
  • Testing
  • Node.js / Express
  • SQL / PostgreSQL
  • Next.js
  • Docker / deployment
C

AI-assisted workflow

Tools I work with, not languages.

  • Claude
  • Cursor
  • Codex
  • Antigravity
D

Game design background

Ways of thinking that carry over.

  • Systems thinking
  • Prototyping
  • Playtesting
  • Interaction thinking

On AI-assisted development

I use AI tools to explore ideas, debug faster, and learn from the code I’m building.

(03)PlaygroundExperiments, small on purpose

Rules, weight and timing.

Game design taught me that how something feels is a set of numbers someone chose. This is where I choose them on purpose.

E.00

Game feel lab

The square from the top of the page runs on a tiny physics engine I wrote for this site. These are its settings. Change them, and it changes up there too.

  1. Coyote time

    A few frames of grace after you run off a ledge, where jump still works. Players never notice it. They notice when it’s gone.

  2. Jump buffering

    Press jump a moment before you land and it still counts. Without it, the game feels like it’s ignoring you.

  3. Squash & stretch

    Pure illusion — the hitbox never changes shape. But it’s what makes a square feel like it has weight.

E.01FlockMove through itEmergenceNo bird knows the shape of the flock. Each follows three local rules — keep apart, match speed, stay close — and the flock appears anyway. Change how far they can see and watch it split or merge.
E.02RopeGrab an endSimulationVerlet integration: a point remembers where it was, and its velocity follows. The rope is only as stiff as the passes the solver gets each frame — cheaper means stretchier.
E.03TilesWatch it solveConstraintsWave function collapse, the small version. Every edge has to agree with its neighbour, so a handful of rules produces a layout nobody drew — the way many procedural levels begin.
(04)Contact

Your move

I’m open to internship opportunities in software development. I’m also happy to talk about a project, a game mechanic, or an interface that bugs you.

© 2026 Emir Şeren

Built with AI-assisted tools. Set in Bricolage Grotesque, Newsreader and Geist Mono.

Back to the start ↑