To qualify for this position, you need:
- Minimum 3 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 problem-solving ability and attention to detail.
- Ability to work independently and take ownership of features end-to-end.
- Clear written and verbal communication, particularly when discussing technical trade-offs.
- Collaborative mindset — willing to give and receive constructive code review feedback.
- Self-motivated learner who keeps up with developments in the JavaScript / React / Node.js ecosystem, GitHub, Claude Code, Docker.
- Reliable, accountable, and proactive in flagging blockers or risks early.
- Strong proficiency in JavaScript / TypeScript.
- Git workflows — feature branches, pull requests, code reviews.
- Understanding of REST API design principles and HTTP fundamentals.
- Awareness of OWASP top-ten and general web security practices.
Duties and responsibilities include, but not limited to:
- Translate product specifications and designs into working, production-ready features across the full stack.
- Build and maintain frontend interfaces using React 18, Vite, TailwindCSS, and shadcn/ui (Radix UI), ensuring accessibility and responsive behaviour.
- Develop backend REST API endpoints using Node.js and Express, following established conventions for authentication, validation, and error handling.
- Implement client-side state management using TanStack Query and form handling with React Hook Form and Zod validation.
- Design and maintain PostgreSQL 16 schemas, write efficient SQL queries using the pg (node-postgres) driver, and manage database migrations.
- Implement data models that balance performance, integrity, and future extensibility.
- Ensure backend security through proper use of Helmet, express-rate-limit, and Better Auth session-based authentication (httpOnly cookies).
- Convert UI/UX designs into pixel-accurate, accessible interfaces using TailwindCSS and Radix UI component primitives.
- Implement client-side routing with React Router v6 and add polish through Framer Motion animations where appropriate.
- Integrate map functionality using Leaflet and maintain a consistent visual language through the Lucide React icon library.
- Build and maintain integrations with PayFast for payment processing, including handling of ITN (Instant Transaction Notification) callbacks and reconciliation.
- Implement transactional email flows using Nodemailer (e.g. password reset, account notifications).
- Integrate additional third-party APIs as required, ensuring secure credential management and graceful error handling.
- Handle file and image uploads via Multer, including validation, storage management, and persistence through named Docker volumes.
- Manage container orchestration using Docker Compose and ensure local and staging environments mirror production.
- Configure and maintain Caddy as a reverse proxy, including automatic HTTPS provisioning.
- Maintain and improve the CI/CD pipeline using self-hosted GitHub Actions, including staging deploys triggered on push to main.
- Monitor Better Auth cloud dashboard (dash and sentinel plugins) and respond to authentication-related signals.
- Diagnose and resolve bugs reported by users, internal stakeholders, or surfaced through monitoring.
- Refactor and improve existing code to reduce technical debt and improve maintainability.
- Write clear commit messages, meaningful pull request descriptions, and inline documentation where logic is non-obvious.
- Ensure security best practices are applied across the stack (input validation, secure cookies, rate limiting, dependency updates).
- Strong proficiency in JavaScript / TypeScript.
- Git workflows — feature branches, pull requests, code reviews.
- Understanding of REST API design principles and HTTP fundamentals.
- Awareness of OWASP top-ten and general web security practices.
If you do not receive feedback within two weeks of submitting your application, please consider your application unsuccessful.