Job description
- The Software Developer is responsible for designing, building, and maintaining features across the full technology stack of our web platform. The role works across the React/TypeScript frontend, the Node.js/Express backend, and the PostgreSQL database layer, taking ownership of features from specification through to production deployment. Having grown beyond junior responsibilities, this role is expected to deliver production-ready features independently, contribute to technical decisions, handle deployments through our CI/CD pipeline, and integrate the platform with third-party services such as PayFast and transactional email providers.
Minimum requirements (Advantageous):
Qualifications
- Bachelor's Degree (BSc) in Computer Science, Software Engineering, Information Technology or a related field.
Experience
- Minimum 8 years of professional software development experience.
- Demonstrated experience building and maintaining production web applications across the full stack.
- Proven track record of shipping features from specification through to deployment.
- Experience working in a Git-based collaborative development environment.
- Strong proficiency in JavaScript/TypeScript and modern web development frameworks and tools, including React 18, Node.js, Express, PostgreSQL, Vite, React Router, TanStack Query, React Hook Form, Zod, Framer Motion, and Leaflet.
- Experience developing secure REST APIs, authentication, file uploads, transactional email, payment gateway integrations, and web application security best practices.
- Understanding of REST API design principles and HTTP fundamentals.
- Experience working with Git workflows, including feature branches, pull requests, and code reviews.
- Strong problem-solving skills with attention to detail.
- Ability to work independently and take ownership of features from concept through deployment.
- Strong written and verbal communication skills, with the ability to discuss technical trade-offs effectively.
- Collaborative mindset with experience participating in code reviews.
- Self-motivated learner who keeps up to date with modern JavaScript, React, and Node.js development practices.
- Reliable, accountable, and proactive in identifying and communicating blockers or risks early.
Duties and responsibilities include, but not limited to:
- Translate product requirements, specifications, wireframes, and UI/UX designs into high-quality, production-ready frontend features.
- Design, build, and maintain modern web applications using React and TypeScript.
- Develop reusable, maintainable, and well-structured components that can be shared across features and applications.
- Build responsive, accessible, and intuitive user interfaces that work consistently across modern desktop, tablet, and mobile browsers.
- Convert UI/UX designs into accurate, polished interfaces while maintaining a consistent visual language across the product.
- Implement appropriate application architecture, component composition, state management, routing, data fetching, caching, and form-management patterns.
- Build complex forms and user workflows, including validation, conditional behaviour, multi-step processes, error handling, and user feedback.
- Integrate frontend applications with backend APIs and services, including authentication, file uploads, payments, mapping, notifications, and other third-party services.
- Work with REST APIs and other service interfaces, correctly handling authentication, pagination, validation errors, loading states, retries, failures, and asynchronous operations.
- Implement secure authentication and authorisation flows in conjunction with backend services, ensuring appropriate handling of sessions, permissions, and protected application areas.
- Apply frontend security best practices, including input handling, dependency management, secure browser storage practices, and protection against common web application vulnerabilities.
- Design frontend solutions that accommodate changing requirements and future functionality without unnecessary complexity or excessive coupling.
- Optimise applications for performance, including rendering efficiency, network usage, application loading time, asset optimisation, and perceived user responsiveness.
- Implement appropriate client-side error handling and provide clear, useful feedback when operations fail.
- Integrate file and image upload functionality, including validation, progress indication, previews, and error handling where required.
- Implement interactive functionality such as maps, dashboards, data visualisations, search, filtering, dynamic forms, and other rich application experiences as required by the product.
- Work closely with backend engineers to define and refine API contracts, data structures, authentication flows, and integration requirements.
- Collaborate with product owners, designers, engineers, and other stakeholders to clarify requirements and identify practical technical solutions.
- Participate in technical discussions and contribute to decisions regarding frontend architecture, application structure, reusable components, and engineering standards.
- Write clean, readable, maintainable, and appropriately documented TypeScript and React code.
- Write and maintain appropriate automated tests for components, application logic, integrations, and critical user journeys.
- Diagnose and resolve defects reported by users, internal stakeholders, automated testing, or application monitoring.
- Investigate and resolve browser-specific, device-specific, performance, usability, and accessibility issues.
- Refactor and improve existing frontend code to reduce technical debt, improve maintainability, and simplify future development.
- Review code contributed by other developers and provide constructive feedback on correctness, maintainability, usability, security, and overall engineering quality.
- Participate in source-control and code-review processes, including producing meaningful commits, pull requests, and supporting technical documentation.
- Work effectively within automated build, testing, deployment, and CI/CD processes and assist in diagnosing issues affecting frontend releases.
- Ensure frontend applications are configurable across local, development, staging, and production environments without embedding environment-specific configuration in application code.
- Maintain awareness of modern React and TypeScript development practices and recommend improvements where they provide clear technical or product value.
- Take ownership of assigned features from initial requirements through implementation, testing, deployment, and ongoing maintenance.
- Contribute to the continued improvement of frontend engineering standards, development practices, tooling, and overall product quality.