Explore the live demonstration of the project: nextjs14-carepulse
CarePulse is an healthcare management application that allows patients to schedule their appointments, and also allows doctors to manage their appointments and patients. The application is built with Next.js, Tailwind CSS, Shadcn UI, Appwrite, Twilio and Sentry.
Folder Structure
nextjs14-carepulse/
βββ app/
β βββ admin/
β β βββ page.tsx
β βββ patients/
β β βββ [id]/
β β βββ new-appointment/
β β β βββ page.tsx
β β βββ register/
β β βββ page.tsx
β βββ favicon.ico
β βββ globals.css
β βββ global-error.tsx
β βββ layout.tsx
β βββ page.tsx
βββ components/
β βββ atoms/
β β βββ file-uploader.tsx
β β βββ form-field.tsx
β β βββ form-submit.tsx
β β βββ stat-card.tsx
β β βββ status-badge.tsx
β βββ forms/
β β βββ appointment-form.tsx
β β βββ patient-form.tsx
β β βββ register-form.tsx
β βββ modals/
β β βββ appointment-modal.tsx
β β βββ auth-modal.tsx
β βββ providers/
β β βββ theme-provider.tsx
β βββ table/
β β βββ columns.tsx
β β βββ data-table.tsx
β βββ ui/ (generated by Shadcn UI)
β βββ [[...]].{tsx,ts}
βββ appwrite/
β βββ actions/
β β βββ appointment.action.ts
β β βββ patient.action.ts
β βββ conf/
β β βββ index.ts
β βββ types/
β β βββ index.d.ts
β βββ client.ts
β βββ env.ts
βββ constants/
β βββ index.ts
βββ lib/
β βββ validation.ts
β βββ utils.ts
βββ public/
β βββ assets/
β β βββ gifs/[[...]].gif
β β βββ icons/[[...]].svg
β β βββ images/[[...]].png
β βββ next.svg
β βββ vercel.svg
βββ types/
β βββ index.d.ts
βββ .env.local
βββ .eslintignore
βββ .eslintrc.json
βββ .gitignore
βββ .prettierignore
βββ .prettierrc
βββ components.json
βββ instrumentation.ts
βββ next-env.d.ts
βββ next.config.mjs
βββ package-lock.json
βββ package.json
βββ postcss.config.mjs
βββ README.md
βββ sentry.client.config.ts
βββ sentry.edge.config.ts
βββ sentry.server.config.ts
βββ tailwind.config.ts
βββ tsconfig.json
Table of Contents
CarePulse is built using the following technologies:
- TypeScript: TypeScript is a typed superset of JavaScript that compiles to plain JavaScript.
- Next.js: Next.js is a React framework for building server-side rendered and statically generated web applications.
- Appwrite: Appwrite is a secure end-to-end backend server for Web, Mobile, and Flutter developers that is packaged as a set of Docker containers for easy deployment.
- Tailwind CSS: Tailwind CSS is a utility-first CSS framework for rapidly building custom user interfaces.
- ESLint: ESLint is a static code analysis tool for identifying problematic patterns found in JavaScript code.
- Prettier: Prettier is an opinionated code formatter.
- Shadcn-UI: Shadcn UI is a React UI library that helps developers rapidly build modern web applications.
- Sentry: Sentry is a developer-first error tracking and performance monitoring platform that helps developers see what actually matters, solve quicker, and learn continuously about their applications.
- Twilio: Twilio is a cloud communications platform as a service company that allows software developers to programmatically make and receive phone calls, send and receive text messages, and perform other communication functions using its web service APIs.
- React Datepicker: React Datepicker is a simple and reusable datepicker component for React.
- Vercel: Vercel is a cloud platform for frontend developers, providing the frameworks, workflows, and infrastructure to build a faster, more personalized Web.
To get this project up and running in your development environment, follow these step-by-step instructions.
In order to install and run this project locally, you would need to have the following installed on your local machine.
Step 0:
Important
- the application uses Appwrite as a backend service for Authentication, Database, Storage and
Messaging, therefore you need to create account here and sets the
APPWRITE_PROJECT_ID
,APPWRITE_URL
, andAPPWRITE_API_KEY
environment variables in.env
file. - to understand how to design the Appwrite collections, refer to the
Appwrite Types
file. add the following environment variables to the
.env
file:APPWRITE_DATABASE_ID
,APPWRITE_STORAGE_ID
,APPWRITE_PATIENT_COLLECTION_ID
,APPWRITE_DOCTOR_COLLECTION_ID
, andAPPWRITE_APPOINTMENT_COLLECTION_ID
. - the application uses Sentry for Error Tracking and Monitoring, therefore, you need to create
Sentry account here and sets the
SENTRY_AUTH_TOKEN
environment variable in.env
file. - the application uses Twilio for SMS, therefore, you need to create Twilio account
here and sets the
TWILIO_ACCOUNT_SID
,TWILIO_AUTH_TOKEN
, andTWILIO_PHONE_NUMBER
environment variables in.env
file.
Step 1:
Download or clone this repo by using the link below:
git clone https://github.com/ladunjexa/nextjs14-carepulse.git
Step 2:
Execute the following command in the root directory of the downloaded repo in order to install dependencies:
npm install
Step 3:
Execute the following command in order to run the development server locally:
npm run dev
Step 4:
Open http://localhost:3000 with your browser to see the result.
All scripts are defined in the package.json
file. Here is a list of all scripts:
Script | Action |
---|---|
npm install |
Installs dependencies |
npm run dev |
Starts local dev server at localhost:3000 |
npm run build |
Build your production site to ./dist/ |
npm run start |
Start your production site locally |
npm run lint |
Run ESLint |
Environment variables[^14] can be used for configuration. They must be set before running the app.
Environment variables are variables that are set in the operating system or shell, typically used to configure programs.
CarePulse uses Appwrite, Sentry, and Twilio as external services. You need to create an account on each of these services and get the required credentials to run the app.
Create a .env
file in the root directory of the project and add the following environment
variables:
NEXT_PUBLIC_ENDPOINT=<NEXT_PUBLIC_ENDPOINT>
APPWRITE_PROJECT_ID=<APPWRITE_PROJECT_ID>
APPWRITE_URL=<APPWRITE_URL>
APPWRITE_API_KEY=<APPWRITE_API_KEY>
APPWRITE_DATABASE_ID=<APPWRITE_DATABASE_ID>
APPWRITE_STORAGE_ID=<APPWRITE_STORAGE_ID>
APPWRITE_PATIENT_COLLECTION_ID=<APPWRITE_PATIENT_COLLECTION_ID>
APPWRITE_DOCTOR_COLLECTION_ID=<APPWRITE_DOCTOR_COLLECTION_ID>
APPWRITE_APPOINTMENT_COLLECTION_ID=<APPWRITE_APPOINTMENT_COLLECTION_ID>
NEXT_PUBLIC_ADMIN_PASSWORD=<NEXT_PUBLIC_ADMIN_PASSWORD>
SENTRY_AUTH_TOKEN=<SENTRY_AUTH_TOKEN>
TWILIO_ACCOUNT_SID=<TWILIO_ACCOUNT_SID>
TWILIO_AUTH_TOKEN=<TWILIO_AUTH_TOKEN>
TWILIO_PHONE_NUMBER=<TWILIO_PHONE_NUMBER>
You can create an optimized production build with the following command:
npm run build
The easiest way to deploy this Next.js app is to use the Vercel Platform.
You can also deploy this Next.js app with Netlify.
Check out Next.js deployment documentation for more details.
Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.
To fix a bug or enhance an existing module, follow these steps:
- Fork the repo
- Create a new branch (
git checkout -b improve-feature
) - Make the appropriate changes in the files
- Commit your changes (
git commit -am 'Improve feature'
) - Push to the branch (
git push origin improve-feature
) - Create a Pull Request π
If you find a bug (failure of a module to execute its intended function), kindly open an issue here by including the issue with a title and clear description.
If you'd like to request a new function, feel free to do so by opening an issue here. Please include sample queries and their corresponding results.
I'd like to express my gratitude to the following people who helped me with this project and made it possible:
CarePulse is open source software licensed as MIT and is free to use β See LICENSE for more details.