Job Description
PN: Please read the job requirements carefully. It is mandatory to take the pre-screening assessment (on the job posting on our website - if your job portal is not showing it to you) to be considered for a role. Please do not apply if you are looking for remote / wfh / not ok with unpaid internship period before job commences.
Full Stack Developer
Onsite
- Bengaluru
- CSE / IT / related branches
City Greens is a fast-growing AgriTech startup building automation and AI-driven solutions for Controlled Environment Agriculture (CEA). Our platforms combine software, IoT, and AI to help modern farms, institutions, and agri-enterprises improve productivity, efficiency, and sustainability.
We are building a suite of internal and customer-facing web applications — Farm OS, a commercial farm management dashboard, a mobile companion app for growers, AI-driven insights tools, and the backend platform that ties it all together.
Role overview
We are looking for motivated full stack developers to join our onsite software team. You will work on live, production-grade applications — building features end to end, integrating real-time IoT data, and shipping code that growers and farm operators use every day. This is not a training internship. You will be contributing to real products from week one.
What you will do
Frontend development
Build and maintain user interfaces for our web and mobile applications using React.js and TypeScript. Implement responsive, performant UI components that surface real-time farm data clearly and reliably.
Backend development
Develop and maintain backend services using Node.js and Express.js. Design and implement REST APIs, handle business logic, manage database interactions, and ensure services are reliable and well-structured.
IoT & real-time data integration
Integrate live sensor and device data into application layers — handling real-time data streams, WebSocket connections, and time-series data from farm hardware. Build interfaces that reflect the state of physical systems accurately and promptly.
Code quality & collaboration
Work within a structured team using GitHub for version control, code reviews, and collaborative development. Write clean, maintainable code, participate in reviews, and share regular progress updates with the team.
Requirements
Who this role is for
- Engineering graduates or final-year students in CSE, IT, ECE, or related branches
- Self-learners who have built things — personal projects, academic projects, or open source contributions
- Developers who want to work on real products, not tutorial code
- Individuals who take ownership of tasks, communicate proactively, and follow through
Key skills & traits
Required
- Solid understanding of HTML, CSS, JavaScript, and TypeScript
- React.js — component design, state management, hooks
- Node.js and Express.js for backend API development
- REST API design and consumption
- Git and GitHub — branching, commits, pull requests
- Problem-solving mindset and ability to debug independently
Good to have
- PostgreSQL or any relational database
- WebSockets or real-time data handling
- Basic understanding of MQTT or IoT data protocols
- React Native or mobile app development experience
- Exposure to cloud platforms (AWS / GCP / Firebase)
- Any deployed project accessible online
Benefits
What we offer
Internship-to-full-time pathway
This role begins as a 3-month onsite, unpaid internship focused on real contribution and performance. Interns who demonstrate technical ability, ownership, and consistent delivery will be offered a full-time position.
Starting salary
₹25,000 / month
Coverage
Health insurance
- Work on production systems — not sandbox projects
- Exposure to IoT-integrated, real-time application architecture
- Structured code review and mentorship from the software team
- Growth into senior development, product engineering, or platform roles
check(event) ; career-website-detail-template-2 => apply(record.id,meta) mousedown=lyte-button => check(event) final-style=background-color:#6875E2;border-color:#6875E2;color:white; final-class=lyte-button lyteBackgroundColorBtn lyteSuccess lyte-rendered=>