Parth Manaktala

Software engineer · Norcross, Georgia

I build software and get it shipped.

At Lightera, a fiber-optics manufacturer, I build the internal systems people there rely on every day: a production storage system I built alone in two weeks and grew into a full inventory system, an API that checks SQL before it runs, and 10+ apps rewritten on .NET 10. On my own time I build iOS apps, and two of them are on the App Store.

01 · Work at Lightera

Things I built, running in production.

Internal systems for a manufacturer, built while the business kept running. Company-specific details are left out on purpose.

Solo2 + 2 weeksScanner + PCAudit trailIn production

An inventory system for fiber spools

I built a storage system for a business unit alone in two weeks, then spent another two weeks turning it into a full inventory system with pallet and rack storage. It runs on handheld scanners and on desktop, and it's in production.

How it works

There are two ways to store things. On pallets, you scan a spool into a box, four spools per box, then the box onto a pallet. You can remove at every level: a spool from a box, or a box from a pallet. Racks are the bigger part. Operators scan a spool and place it at a specific position in a rack, and a 3D view of the rack, built with Three.js, shows what's where.

Managers add racks directly in the app, and only managers can. The layout is set up by the people who use it, not hard-coded by a developer. When something is removed, the user can record a reason, and the system tracks who added and who removed each item, so there's a full audit trail.

It works on Zebra handheld scanners and on PC. On the scanner, every screen is designed around scanning instead of typing. It handles about 50–70 boxes in an average week, with four spools per box.

It was two builds. I built the original storage system alone in about two weeks. Later I built the rack expansion alone in about two more weeks, and part of that time went into gathering requirements, going back and forth with the people using it, and agreeing on what to call the parts of a rack.

.NET · SQL Server · Three.js · Zebra scanners

Designed & built

An API that checks SQL before it runs

It reads each SQL statement before running it, checks it against a set of rules, and sends it to the right database. It serves one area of the business, and the code calling it never needs to know which database answered.

SQL inone or a batch Parseops · tables · joinspredicates · columns Check rulesop × column × table Routewhere does it live? SQL Server Sybase ASE
How it works

The API takes one SQL statement or a batch. It parses each one into its operation, tables, joins, predicates and columns, and checks the result against a rules table that says which operations are allowed on which columns of which tables. Then it chooses the database, runs the query and returns the result.

The parsing sits on Microsoft's SQL parser library. I wrote my own override classes that record table names, clauses and the rest while the parse tree is walked.

For that area, database access rules live here, in one place. To pick a database, it reads the same per-table routing data as the migration below. The API covers one area, and the routing logic covers everything.

C# · ASP.NET Core · Dapper · SQL parsing

10+ appsDesign system built solo

Rewriting the old apps on .NET 10

2,3455database calls on one dashboard, before and after the rewrite
ThemesDialogsTablesKPI blocksProgressLayouts

These weren't version bumps. For each app I worked out what it actually does, fixed the logic where it was wrong, rewrote the data access and redesigned the interface. Everything stayed compatible with the processes that depend on it.

The platform under it

So new apps don't start from an empty folder, I built an internal .NET 10 starter platform, which sets up the app structure and shared patterns. I also built a hosted design library to go with it: themes, shared CSS and reusable components like dialogs, tables, KPI blocks and layouts. The goal was one consistent look and structure across internal apps, and less boilerplate.

.NET 10 · ASP.NET Core MVC · Dapper · Bootstrap

2 apps8 chambers + 50+ machinesWPFIn production

Rewriting the apps that run the machines

I rewrote two legacy WPF desktop apps that run on the production floor. One runs 8 chambers, 4 on each of 2 PCs. The other runs on 50+ machines. Both are live. Operators now fix common problems on the screen instead of calling support, and every cycle is tied to the person who started it.

pressure controller cutoff dashboard warns time →

Illustration, not real data. The chamber app now draws the controller's cutoff on its pressure graph.

What changed

Both apps got a modern UI and better practices. Old blocking calls moved off the UI thread into background work, so the screen no longer freezes while the app waits.

Operators fix common problems themselves. Before, if a spool was loaded into the wrong chamber, or a cycle stopped in the middle and had to be aborted, the operator had to call the support team, and the support team reset the database by hand. Those calls came at any hour, including 2 a.m. The fix was just a few queries, but it often took a long time. Now the recovery is on the screen.

Every cycle has a name on it. The old app had one global login that never timed out. Now an operator logs in to start every cycle, and to reset one, so every cycle and every reset is tied to a person.

Engineers get their own data. Detailed metrics are in the app, and trend graphs of the machine data show where things are heading and help catch machine failure. Engineers decide without asking my team for logs or data.

One tap to report a problem. On the 50+ machines, a button sends a screenshot of the screen and the end of the log file to my team, for errors or anything else. Nobody has to describe a problem over the phone any more.

The run that never finished

One chamber kept producing bad runs. Some spools came out wrong, and some never came out, because a timer kept resetting and the run went on indefinitely. It was a nightmare to track down.

I built graphs of the machine data, and once it was plotted the pattern was obvious: the chamber was slowly losing pressure. Below a certain pressure, the machine's own controller broke the cycle and restarted the timer. Nobody knew that threshold existed.

It looked like a software bug, a timer that wouldn't stop. The cause was physical, gradual, and set by a rule in the controller that nobody had written down. You couldn't see it in any single record. On a chart it was obvious.

Now the app draws the threshold as a line on its pressure graph, and the dashboard warns when pressure drops below it. The cutoff itself still belongs to the controller. The acknowledgement fix below is from the same chamber app.

C# · WPF · PLC integration

Zero downtime200+ pages & sites800+ tables2+ years

Moving to SQL Server without a cutover

More than 200 pages and sites had to move from Sybase ASE to SQL Server while people kept using them. There was never a weekend when everything switched at once. Each of the 800+ tables moved on its own, and shared routing logic checked where a table lived before every read and write.

Table isReads fromWrites to
movedSQL ServerSQL Server
duplicatedSQL Serverboth, kept in sync
not yet movedSybaseSybase
My part

Because the routing was stored as data, moving a table meant changing a row, not doing a deploy. It let us decouple complex table joins, queries and external dependencies, and joins between moved and unmoved tables kept working the whole way through. I helped the team design that approach.

There was no fixed order. It depended on the table. Some tables take live data every second and are tied to other tables, which can be tied to others again. You can't copy all of them at once without losing records, and you can't coordinate moving that many tables at once while the system is live. So tightly coupled tables went into the duplicated state first, with writes going to both databases. Critical processes use transactions to keep the two in step.

Most of my own time went into rewriting queries, handling the places where the two databases behave differently, and fixing the production issues those differences caused.

Sybase ASE · SQL Server · C#

Performance
4–5 h → ~30 min

A snapshot job that made the system unusable

A critical data snapshot job ran for four to five hours, and parts of the system were unusable while it ran. After I found the bottlenecks and tuned the queries, it takes about 30 minutes on average, and sometimes as little as ten. Several other slow operations went from minutes to seconds.

SQL Server · Sybase ASE · query tuning

Production debugging
~1 in 100

Don't trust the acknowledgement

About once in a hundred runs, an equipment-control app (the same chamber app) got stuck in a state that took a manual fix to clear. The controller was replying OK to start commands it hadn't actually carried out. I stopped treating that reply as proof: the app now polls every 500 ms for up to 5 seconds to confirm the start, and rolls back before any downstream update if it never happens.

C# · equipment integration

02 · Apps

Things I ship on my own.

iOS apps I came up with, designed and shipped myself. None of them have accounts, ads or tracking, and your data stays on your device and in your own iCloud.

On the App Store

Dump

Save anything now and deal with it later: links, thoughts, a restaurant someone mentioned, recipes, images, files. Search does most of the organizing.

Everything is saved to the device before it syncs or gets enriched, so saving never waits on the network. It works from the share sheet, Spotlight and Siri. On-device suggestions are always editable and never rearrange your things without asking.

SwiftUI · Core Data + CloudKit · Share Extension · Core Spotlight · App Intents · Foundation Models

Dump inbox with saved links and notes
Dump search showing a saved restaurant inside a collection
On the App Store

Void

A timer for doing nothing, plus a guided breathing mode. It's deliberately minimal and asks almost nothing of you.

A Live Activity keeps the session going after you leave the app, haptics set the breathing pace, and finished sessions are saved to Apple Health as mindful minutes.

SwiftUI · Live Activities · Haptics · HealthKit

Void home screen
Void guided breathing session
In developmentTestFlight next

Roamed

A sticker book for travel: all 50 states, 63 national parks, 50 mountains, 27 theme parks, 21 scenic drives and a directory of over 3,300 state park entries. Check in at a place and its sticker fills in. It's a collection, not a checklist: no streaks, nothing expires, and it only ever counts up.

If you turn it on, it notices when you've arrived somewhere new and asks you to confirm. It never logs a visit by itself. There are no accounts, no backend and no third-party code.

SwiftUI · SwiftData + CloudKit · MapKit · CoreLocation · zero dependencies

Roamed album showing collections of national parks, state parks, mountains and more
Roamed celebration after collecting Grand Teton
Roamed place page for Mount Rainier with a Check in button
TestFlight

Bite

A local-first calorie, macro and water tracker. Smart Fill uses Vision to read a nutrition label, and the on-device Apple model turns it into a draft you check before saving. Nothing goes to a server.

SwiftUI · SwiftData + CloudKit · HealthKit · Vision · Foundation Models

Personal

Blah

A private app, built for one user, that combines calendar, reminders, health, weather and movement history with on-device prediction. The hard part was the Core ML movement model: stopping it from peeking at future data during training, and only showing predictions it's confident about.

SwiftUI · SwiftData · CloudKit · Core ML · Cloudflare

Open source

Restricted Input

A small Spring Boot library for validating request input with annotations like @RestrictedInput and @ValidPhone. Apache 2.0, published on Maven Central.

Java · Spring Boot · Maven

03 · Approach

How I work.

Software should feel good to use, even the internal kind.

I took five UX and HCI courses during my master's, and they shape everything I build. The storage system is designed around the scanner in someone's hand. The rewritten dashboards got a real interaction redesign, not just new code. My apps start from how they should feel.

AI writes a lot of the code. I own the product.

I use Codex, Claude Code and Cursor. On my own apps they write nearly all of the implementation, while I direct everything else:

Product ideaArchitectureUX & designDesign patternsReviewTestingShip decision

At work, AI tools are a normal part of the day, not the whole of it.

04 · Experience

Where I've worked.

Download the one-page résumé ↗

  1. Jul 2024 – now

    Lightera

    Software Engineer · Norcross, GA

    Storage and inventory system, machine-app rewrites, a SQL API, .NET 10 rewrites and design system, the Sybase → SQL Server migration and its routing logic, performance work and production support. See the work section above.

  2. May – Aug 2023

    OFS Fitel

    Software Developer Intern · Georgia

    Built C#/.NET tools that monitor system and database-connection health with threshold-based alerts, and a SQL query viewer with formatting and syntax highlighting.

  3. Jun 2019 – Jul 2022

    Tata Consultancy Services

    Software Developer / Systems Engineer · Bangalore

    Led backend development of a file and software-package transfer platform across AWS and Azure, handling packages up to 100 GB. Worked on an AWS integration gateway for a Fortune 100 client. Built and contributed to monitoring, logging and observability pipelines, and CI/CD with automated tests at 90%+ JUnit coverage. Mentored five new team members, and received Star of the Month and Star of the Quarter awards.

Education

Purdue UniversityM.S. Computer Science · 2022–2024 · 4.0 GPA

SRM UniversityB.Tech. Information Technology · 2015–2019

Toolbox

Backend

C#, .NET 10, ASP.NET Core MVC, WPF, Web APIs, Dapper, IIS, Java, Spring Boot

Data

SQL Server, Sybase ASE, PostgreSQL, MySQL, query tuning, SQL parsing

iOS

Swift, SwiftUI, SwiftData, Core Data + CloudKit, App Intents, Live Activities, Foundation Models, Core ML

Cloud & web

AWS, Azure, Cloudflare, CI/CD, JavaScript, Three.js, Bootstrap

Let's build something.

If you're hiring for backend, .NET, database or iOS work, or you just want to talk about something here, email is the fastest way to reach me.

[email protected]