This repository contains the frontend for the RTB Accreditation platform.
It is a shared codebase for three portals:
- Applicant Portal
- Evaluator Portal
- Super Admin Portal
The purpose of this repository is to give every frontend contributor a clean and organized starting point so implementation can begin immediately and stay consistent across the team.
Build the frontend according to the approved design, keep the portals clearly separated by role, and collaborate through feature branches before merging into the shared development branch.
- Next.js App Router
- TypeScript
- Tailwind CSS
- Radix UI primitives
lucide-react- TanStack Query
- React Hook Form
- Zod
The component and styling setup is already prepared in this codebase.
Collaborators should continue using the same stack and not introduce a different UI system.
- Tailwind CSS for layout, spacing, sizing, and utility styling
- Radix UI primitives for accessible component behavior
lucide-reactfor icons- Existing reusable UI components from
src/components/ui - Existing shared layout components from
src/components/layoutandsrc/components/navigation
This project is already structured in a shadcn-style way manually.
That means:
- reusable UI components already exist in
src/components/ui - the team should keep following the same pattern
- if new components are added later, they should match the current structure and styling approach
The main blue used in this project is:
#0088FF
Use this blue consistently for:
- primary buttons
- active sidebar states
- focused inputs
- highlights
- key chart accents
- onboarding progress states
The following shared assets are already available in the project:
- Logo:
public/images/branding/rtb-logo.png - Login or auth banner:
public/images/auth/sider-banner-login.png
Use these existing assets instead of re-uploading duplicates.
Example usage:
import Image from "next/image";
<Image src="/images/branding/rtb-logo.png" alt="RTB Logo" width={120} height={80} />
<Image src="/images/auth/sider-banner-login.png" alt="Login banner" width={432} height={768} />Open or create your project folder first, then run:
git clone https://github.com/etrainermis/accreditation-frontendv2.git .The dot . means the repository will be cloned into the current folder.
Run all commands from the repository root directory.
npm installEvery developer should work on their own branch. Use your name as the branch name.
Examples:
git checkout -b emmanuel
git checkout -b kelia
git checkout -b tresorDo not work directly on main.
Do not work directly on dev.
npm run devOpen:
http://localhost:3000
Use this flow for collaboration:
- Clone the project.
- Create your own personal branch using your name.
- Implement your assigned task in your own branch.
- Push your branch and open a merge request or pull request into
dev. - Review and merge changes into
devfirst. - Move changes to
mainonly after they are stable and approved fromdev.
In short:
- Personal branches: day-to-day work
dev: integration branchmain: stable branch
Frontend implementation should follow the design as it is.
Use the shared Figma design link provided by the team as the main visual reference before building screens, components, spacing, layout, and flows.
Do not guess new layouts when the design already exists. Do not redesign screens unless the team agrees on a change.
Used for:
- onboarding and registration
- institution profile
- applications
- evaluation status visibility
- certification outcome visibility
Used for:
- assigned applications
- reviews
- due diligence
- paper evaluation
- findings and comments
Used for:
- evaluator management
- evaluator assignment
- criteria management
- monitoring progress
- platform oversight
src/
app/
components/
features/
lib/
hooks/
types/
styles/
public/
images/
branding/
auth/
Contains all routes and portal entry points.
This includes:
- public routes such as login and onboarding
- applicant routes
- evaluator routes
- super-admin routes
- route layouts
Contains reusable UI and shared layout pieces.
This includes:
- shared sidebar and topbar pieces
- reusable UI building blocks
- shared form wrappers
- feedback and table placeholders
Contains feature-based business areas.
This is where portal-specific implementation should grow.
Examples:
- auth
- applications
- evaluations
- criteria
- evaluator-management
- certificates
Contains project utilities and shared frontend logic.
This includes:
- API helpers
- auth helpers
- permissions
- constants
- config
- validations
- utility functions
Contains reusable React hooks shared across features.
Contains shared TypeScript types and interfaces.
Contains shared styling tokens and global style support.
Important files here include:
src/styles/tokens.cssfor design tokens and shared color valuessrc/app/globals.cssfor global app styling
Contains static assets used directly by the frontend.
Use this folder for:
- logos
- banners
- illustrations
- mock images
- other shared visual assets
When you start work:
- Check the design first.
- Identify the correct portal.
- Work inside your own branch.
- Add code in the correct folder based on responsibility.
- Reuse the current styling system instead of creating a new one.
- Use the existing blue
#0088FFas the primary action color. - Use the shared assets already placed in
public/imageswhere appropriate. - Keep role-specific logic inside the correct portal or feature area.
- Merge into
devbefore anything goes tomain.
npm run dev- start development servernpm run build- build the projectnpm run start- run production servernpm run lint- run lintingnpm run typecheck- run TypeScript checks
- This repository is frontend-focused.
- Avoid backend assumptions unless the frontend needs a lightweight placeholder.
- Keep the portals separate by role.
- Keep implementation aligned with the Figma design.
- Keep using the current component and styling system already present in the repo.