TaskLink is a cloud-based platform that connects clients with trusted local technicians in Cameroon. It uses AI-based ranking, verified profiles, real-time chat, bookings, proposals, billing, wallets, and admin oversight to improve trust, transparency, and organization in local service delivery for both clients and providers across urban Cameroon.
# tasklink-app
This project was created with Better-T-Stack, a modern TypeScript stack that combines Next.js, Convex, and more.
## Features
- **TypeScript** - For type safety and improved developer experience
- **Next.js** - Full-stack React framework
- **TailwindCSS** - Utility-first CSS for rapid UI development
- **Shared UI package** - shadcn/ui primitives live in `packages/ui`
- **Convex** - Reactive backend-as-a-service platform
- **Authentication** - Clerk
- **Biome** - Linting and formatting
- **PWA** - Progressive Web App support
- **Turborepo** - Optimized monorepo build system
## Getting Started
First, install the dependencies:
```bash
pnpm install
```
## Convex Setup
This project uses Convex as a backend. You'll need to set up Convex before running the app:
```bash
pnpm run dev:setup
```
Follow the prompts to create a new Convex project and connect it to your application.
Copy environment variables from `packages/backend/.env.local` to `apps/*/.env`.
### Clerk Authentication Setup
- Follow the guide: Convex + Clerk
- Set `CLERK_JWT_ISSUER_DOMAIN` in Convex Dashboard
- Set `NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY` in `apps/web/.env`
- Set `CLERK_SECRET_KEY` in `apps/web/.env` for Clerk server middleware
Then, run the development server:
```bash
pnpm run dev
```
Open
localhost in your browser to see the web application.
Your app will connect to the Convex cloud backend automatically.
## UI Customization
React web apps in this stack share shadcn/ui primitives through `packages/ui`.
- Change design tokens and global styles in `packages/ui/src/styles/globals.css`
- Update shared primitives in `packages/ui/src/components/*`
- Adjust shadcn aliases or style config in `packages/ui/components.json` and `apps/web/components.json`
### Add more shared components
Run this from the project root to add more primitives to the shared UI package:
```bash
npx shadcn@latest add accordion dialog popover sheet table -c packages/ui
```
Import shared …