Onboarding

This document provides a comprehensive onboarding guide for frontend engineers working at Innox Technologies, including setup instructions, workflows, architecture overview and development standard.

Engineering Onboarding Guide

This guide will help you get up and running with any of innox project.

Table of Contents

  • Prerequisites

  • Quick Start

  • Development Workflow

  • Project Structure

  • Key Technologies

  • Testing

  • Common Tasks

  • Resources

Prerequisites

Before you begin, ensure you have:

  • Node.js: v18.17.0 or higher (v20+ recommended)

  • npm: v9.0.0 or higher

  • Git: Latest version

  • Code Editor: VS Code with recommended extensions

  • ESLint

  • Prettier

  • TypeScript and JavaScript Language Features

  • Auto Import

  • Path Intellisense

Quick Start

1. Clone the Repository

2. Install Dependencies

3. Set Up Environment Variables

Create a .env.local file in the root directory:

4. Run Development Server

The application will be available at http://localhost:3000arrow-up-right

5. Development Workflow

Branch Strategy

  • main - Production-ready code

  • staging - For QA and External testing

  • develop - Integration branch for features

  • feature/* - Feature branches

  • bugfix/* - Bug fix branches

Commit Convention

We follow conventional commits:

Types:

  • feat - New feature

  • fix - Bug fix

  • docs - Documentation changes

  • style - Code style changes (formatting, etc.)

  • refactor - Code refactoring

  • test - Adding or updating tests

  • chore - Maintenance tasks

Examples:

Code Review Process

  1. Create a feature branch from develop

  2. Implement your changes

  3. Run tests and linting

  4. Create a pull request

  5. Request review from team members

  6. Address feedback

  7. Merge after approval

Running Tests

Building for Production

Key Technologies

Next.js 15+ with App Router

  • Server Components: Default for all pages

  • Client Components: Use "use client" directive for interactivity

  • Server Actions: Use "use server" for data mutations

  • File-based Routing: Routes defined by file structure

Important Rules:

  • Keep components as Server Components by default

  • Only use Client Components when necessary (forms, interactive UI)

  • Use Server Actions for all data mutations (no client-side fetch)

  • Never use useEffect for data fetching

Chakra UI v3

Note: Chakra UI v3 has a completely different API from v2.

Key Changes from v2:

  • Provider renamed to ChakraProvider

  • Use defaultSystem instead of system()

  • Many components removed (Avatar, Switch, Table)

  • Props renamed (e.g., bgPalette β†’ colorPalette)

Theme Usage:

NextAuth v5 Beta

Configuration:

  • Credentials provider with bcrypt password hashing

  • JWT strategy for sessions

  • Role-based access control

Usage:

TypeScript

Type Definitions: Located in src/types/index.ts

ActionResult Pattern:

Testing

Test Structure

Writing Tests

Server Actions:

Test Commands

Common Tasks

Adding a New Page

  1. Create a new directory in src/app/

  2. Add page.tsx file

  3. Export a default Server Component

Example:

Creating a Server Action

  1. Create file in src/app/actions/

  2. Add "use server" directive

  3. Export async function

  4. Return ActionResult<T> type

Example:

Adding a UI Component

  1. Create component in src/components/ui/

  2. Export as named export

  3. Use Chakra UI v3 components

  4. Add TypeScript props

Example:

Resources

Documentation

Internal Documentation

  • ARCHITECTURE.md - System design and architecture

  • CODE_PATTERNS.md - Code conventions and patterns

  • TROUBLESHOOTING.md - Common issues and solutions

Getting Help

  1. Check existing documentation

  2. Search existing GitHub issues

  3. Ask in team chat/Slack

  4. Create a new issue with detailed description

Next Steps

  1. Complete the Quick Start setup

  2. Read ARCHITECTURE.md to understand the system design

  3. Review CODE_PATTERNS.md for coding conventions

  4. Explore the codebase using the project structure guide

  5. Start with a small task or bug fix

Welcome aboard! πŸš€

Last updated