Sickle Sense is a web application designed to transform the management of sickle cell disease. As someone living with the illness, my mission is to create a holistic platform that enhances the quality of life for all individuals living with SCD, bridging the gap between personal health management and medical support.
Got to use some cool tech to build this project. Here's a breakdown of just some of the services and tools I used:
- Framework: Bun.js for an efficient server-side JavaScript runtime
- Message Broker: Ably for real-time messaging and pub/sub capabilities
- Email Service: Resend for seamless email delivery
- Deployment: Render for quick hobby-tier deployments
- Web Framework: FastAPI for building APIs with Python
- Search Engine: Elasticsearch for powerful full-text search capabilities
- Data Validation: Pydantic for data validation and settings management
- AI Integration: OpenAI Python client library for accessing the OpenAI API
- Framework: Next.js (React) for a robust, server-side rendered application
- Authentication: NextAuth.js for secure OAuth and JWT-based authentication experience
- State Management: Zustand for simple state management in React
- Data Fetching: React Query for efficient data fetching and synchronization
- Data Visualization: Recharts for creating responsive charts
- Client Search Functionality: Fuse.js for fuzzy search capabilities
- API: tRPC for type-safe, RPC-style client-server communication
- Database: Prisma ORM with PostgreSQL for efficient data management
- Styling: Tailwind CSS and shadcn/ui components for a flexible design system and ergonomic UI primitives
- AI Integration: OpenAI and Google Gemini APIs wrapped around the Vercel AI SDK for intelligent health insights
- Containerization: Docker for spinning up development services with ease
- Deployment: Vercel for seamless continuous deployment with only
git push - Health Data Integration: Fitbit API for accessing health data from wearable devices
- Asynchronous Tasks/Cron Jobs: Trigger.dev for managing background tasks and cron jobs
To run this project locally, you'll need to have Node.js, Docker, and PostgreSQL installed on your machine. You'll also need to set up a Prisma database and configure the environment variables, as seen in .env.example.
git clone https://github.com/nyumat/sicklesense.gitcd sicklesensenpm installCreate a .env file based on the .env.example provided:
cp .env.example .envImportant
Make sure the Docker daemon is running before proceeding.
docker-compose -f docker-compose-local.yml up -dTip
You can also use ./fresh-db.sh and or ./start-database.sh to start/reset the database.
npx prisma generate
npx prisma db pushYou can now run the development server:
npm run devThen visit http://localhost:3000 to view Sickle Sense in your browser.
📁 Project Structure
.
├── public # Static assets
├── src # Application source code
│ ├── app # Next.js pages and routing
│ ├── components # Reusable UI components
│ ├── data # JSON data for countries/states
│ ├── hooks # Custom React hooks
│ ├── lib # Utility functions and libraries
│ ├── server # Server-side code
│ ├── styles # CSS and styling files
│ ├── trigger # Trigger.dev cron jobs and tasks
│ └── trpc # tRPC API routes and configurations
├── .env # Environment variables
├── .env.example # Example environment variables
├── .eslintrc.js # ESLint configuration
├── .gitignore # Git ignore rules
├── docker-compose.yml # Docker configuration for services
├── next.config.js # Next.js configuration
|—— publisher # Bun.js pub/sub service
|—— prisma # Prisma schema and migrations
|__ elasticsearch # Elasticsearch web service
├── package.json # Project dependencies and scripts
├── tailwind.config.ts # Tailwind CSS configuration
├── tsconfig.json # TypeScript configuration
└── README.md # Project documentationThis project uses ESLint and Prettier for code linting and formatting.
Lint the codebase:
npm run lintFormat the code:
npm run formatThe project is currently deployed on Vercel. To deploy your own instance, head over to the Vercel dashboard and follow the instructions to deploy a new project from the GitHub repository you're hosting SickleSense on.
This was a hackathon project, but I'd love to see it grow and become a useful tool for the SCD community. If you'd like to contribute, feel free to open an issue or submit a pull request.
Shoutout to AfroTech for hosting the AfroTech Hacks 2024 hackathon, where this project was created. As someone with SCD, I'm excited to see the impact this project can have on the community.
SickleSense is MIT licensed.

