Mid-Senior Python Developer
Summary
Build full-stack web apps using React 18, Express, PostgreSQL, and Docker, shipping features from UI to live production while integrating third-party APIs and payment flows.
We're on the hunt for a developer who can comfortably jump between frontend finesse, backend logic, and database wizardry - basically, someone who doesn't panic when the stack gets a little... tall. You'll be building cool things people use (yes, in production), taking ideas from "this might work" to "this is live, don't touch it on a Friday." You'll spend your time crafting slick interfaces, wiring up powerful backend logic, and making sure everything plays nicely together, including those mysterious third-party integrations that occasionally have moods of their own.
Key Responsibilities
- Turning product ideas and designs into real, working features across the stack - from shiny UI to the logic that makes it all tick
- Building smooth, responsive interfaces using React 18, Vite, TailwindCSS, and shadcn/ui (Radix UI) and yes, they should look as good in real life as they did in Figma
- Writing backend magic with js and Express, creating APIs that are fast, secure, and don't randomly fall over
- Keeping frontend data under control with TanStack Query, and making forms behave with React Hook Form + Zod (because validation matters)
- Designing and maintaining clean, efficient data structures in PostgreSQL, writing SQL that doesn't make future-you cry
- Making sure everything is secure using tools like Helmet, rate limiting, and proper session handling (no "just hope for the best" approach here)
- Translating UI/UX into pixel-perfect builds using TailwindCSS + Radix primitives, with just enough Framer Motion to make things feel polished
- Handling navigation like a pro with React Router, so users never feel lost
- Working with maps (Leaflet) and icons (Lucide) to keep things visually consistent and user-friendly
- Integrating with external services, including payment flows (PayFast) and email systems (Nodemailer), and dealing with the chaos when third‑party APIs feel unpredictable
- Managing file uploads (yes, users upload anything) using Multer, and keeping storage organised
- Keeping everything running smoothly in Docker, with environments that actually behave the same locally, staging, and in production
- Helping push code to production via CI/CD (GitHub Actions) without breaking everything on a Friday afternoon
- Debugging weird, mysterious issues, the kind where you say, "that doesn't make sense" at least twice
- Refactoring older code to make it cleaner, faster, and less confusing for the next person
- Writing commit messages that future developers will silently thank you for
- Quietly making sure good security and engineering practices are followed across the board
Job Experience and Skills Required
- Have at least a couple of years of real-world development experience under your belt.
- Have built products that actual humans use (and occasionally complain about).
- Can take a feature from "great idea" to "it's live" without needing a weekly motivational speech.
- Understand that Git is for version control, not for creating 146 branches nobody will ever merge.
- Enjoy solving problems and don't immediately declare bankruptcy when faced with an unfamiliar issue.
- Can work independently but also know when to ask for help before accidentally reinventing Google.
- Communicate technical concepts without sounding like a malfunctioning Stack Overflow post.
- Give constructive feedback during code reviews and don't take feedback personally when it's your turn.
- Stay curious about new tools and technologies without feeling compelled to rewrite everything every six months.
- Take ownership, meet commitment