About Paperplane
Paperplane builds product for people who value their time. We move fast, care deeply about craft, and hold ourselves to a standard of no mediocrity — in what we ship and in how we work. Our stack is React and TypeScript on the frontend, Node.js on the backend, and we treat AI tooling as a genuine part of the development workflow, not a novelty.
We're a small team, which means your work is visible, your decisions matter, and you'll have real exposure to the full product — not just one slice of it.
The Role
We're looking for a mid-level full stack JavaScript developer who is comfortable working across a React frontend and a Node.js backend, writes clean and well-tested code, and has developed a thoughtful approach to working with AI coding tools.
You'll work within established patterns alongside senior engineers who will support your growth — but we expect you to take genuine ownership of the features you build end-to-end, from API design through to UI. We also expect you to be able to explain every line you ship, regardless of whether you or an AI tool wrote it first.
What You'll Do
- Build and ship full stack features in React and TypeScript on the frontend, and Node.js on the backend — owning a feature from API through to UI
- Write and maintain REST APIs: designing clean endpoints, handling errors gracefully, and keeping data contracts clear
- Work with relational or document databases — writing queries, understanding indexing basics, and modelling data sensibly
- Use AI coding tools (Cursor, Claude, Copilot, or similar) to accelerate your work — scaffolding, debugging, test generation — while staying in full control of what you ship
- Write meaningful tests across the stack: unit tests, integration tests, and knowing which is appropriate where
- Participate in code review — give clear feedback and take it well
- Collaborate with design to implement UI components accurately using MUI, and with senior engineers to align on API contracts and architecture
- Ask good questions when requirements are unclear, rather than building on assumptions
What We're Looking ForFrontend
- Solid React fundamentals — functional components, hooks, and a clear understanding of when and why components re-render
- TypeScript comfort in day-to-day use — you don't need to be an advanced generics expert, but no 'any' as a get-out clause
- MUI (v5+) — able to use the component library and theming system as intended, without wrapping everything in unnecessary custom layers
- React Router v6 — comfortable with route structure and basic navigation patterns
- State management awareness — you understand the difference between local state, lifted state, and a global store like Zustand or Context, and can choose appropriately for the problem at hand
Backend
- Node.js and Express (or a similar framework) — building and consuming REST APIs, handling middleware, and managing errors properly
- Database fundamentals — comfortable with either a relational database (PostgreSQL, MySQL) or a document store (MongoDB): writing queries, basic data modelling, and not over-fetching
- API design awareness — you think about the consumer of the endpoint, not just what's easiest to implement
- Environment configuration, basic authentication patterns (JWT or session-based), and a clear sense of what should and shouldn't live in version control
AI fluency
- Regular user of AI coding tools (Cursor, Claude, GitHub Copilot, or similar) as a genuine part of your workflow, not just occasionally
- Able to describe concretely how you use AI: what you delegate to it, what you verify yourself, and at least one example where you chose a different approach than what it first suggested
- Reviews AI-generated code before shipping it — understands that authorship and responsibility stay with you
- Uses AI to accelerate the right things: boilerplate, test scaffolding, exploring unfamiliar APIs — not to skip thinking through a problem
Ways of working
- Asks the right questions when a spec is incomplete — comfortable with some ambiguity, but doesn't build on wrong assumptions silently
- Writes code that the next person can read — consistent naming, no dead code, a comment where the why isn't obvious
- Takes feedback well and gives it clearly — code review is a collaboration, not a verdict
- Ownership mindset — you care about what happens after you open the PR
Nice to Have
- Exposure to GraphQL — either building or consuming a schema
- Familiarity with containerisation basics (Docker) and CI/CD pipelines
- Experience with Vite, Vitest, Jest, or Supertest as part of a test setup
- Accessibility awareness (WCAG 2.1 AA) in practice, not just in principle
- Exposure to real-time patterns — websockets, polling, or event-driven updates
Job Type: Full-time
Pay: Up to ₹950,000.00 per year
Experience:
- total work: 2 years (Required)
Work Location: Hybrid remote in Fort, Mumbai, Maharashtra