Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .husky/pre-commit
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ if [ -n "$CHANGED_FILES" ]; then
# Only run tests if there are JavaScript/TypeScript files changed
# Use --findRelatedTests to only run tests affected by changed files
# Add --passWithNoTests to prevent failure when no tests match
echo "$CHANGED_FILES" | xargs pnpm test --passWithNoTests --findRelatedTests
echo "$CHANGED_FILES" | xargs pnpm test

# Store the test exit status
TEST_STATUS=$?
Expand Down
32 changes: 29 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,12 @@
# Inter-Context Language Pipeline

This is a [Next.js](https://nextjs.org) project bootstrapped with [`create-next-app`](https://nextjs.org/docs/app/api-reference/cli/create-next-app).

[![Language Platform CI/CD Pipeline](https://github.com/iababio/Custom-Language-Platform/actions/workflows/ci.yml/badge.svg)](https://github.com/iababio/Custom-Language-Platform/actions/workflows/ci.yml)

[![Live Demo](https://img.shields.io/badge/demo-live-brightgreen.svg)](https://language-pipeline.vercel.app)

This is a [Next.js](https://nextjs.org) project bootstrapped with [`create-next-app`](https://nextjs.org/docs/app/api-reference/cli/create-next-app).
![Project Screenshot](public/screenshots/1.png)

## Getting Started

Expand All @@ -23,17 +28,38 @@ You can start editing the page by modifying `app/page.tsx`. The page auto-update

This project uses [`next/font`](https://nextjs.org/docs/app/building-your-application/optimizing/fonts) to automatically optimize and load [Geist](https://vercel.com/font), a new font family for Vercel.

## Screenshots

<div align="center">
<img src="public/screenshots/2.png" alt="Home Page" width="45%"/>
<img src="public/screenshots/features-view.png" alt="Features View" width="45%"/>
</div>

<div align="center">
<img src="public/screenshots/mobile-view.png" alt="Mobile View" width="30%"/>
</div>

## Features

- ⚡️ Next.js 14 with App Router
- 🔒 Authentication with Clerk
- 💅 Styled with Tailwind CSS and Shadcn UI
- 🌐 Responsive design for all devices
- 📱 Progressive Web App (PWA) support

## Learn More

To learn more about Next.js, take a look at the following resources:

- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API.
- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial.
- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API.
- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial.

You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js) - your feedback and contributions are welcome!

## Deploy on Vercel

The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js.

[![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/new/clone?repository-url=https://github.com/yourusername/language-pipeline)

Check out our [Next.js deployment documentation](https://nextjs.org/docs/app/building-your-application/deploying) for more details.
3 changes: 2 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,8 @@
"react-icons": "^5.5.0",
"react-markdown": "^10.1.0",
"tailwind-merge": "^3.2.0",
"uuid": "^11.1.0"
"uuid": "^11.1.0",
"xlsx": "^0.18.5"
},
"devDependencies": {
"@eslint/eslintrc": "^3",
Expand Down
72 changes: 72 additions & 0 deletions pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Binary file added public/screenshots/1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/screenshots/2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion src/app/(auth)/sign-in/[[...sign-in]]/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@ export default function SignInPage() {

<div className="relative left-0 w-full flex justify-center">
<Link
href="https://github.com/iababio/llm_evaluator"
href="https://github.com/iababio/Custom-Language-Platform"
target="_blank"
rel="noopener noreferrer"
className="flex items-center gap-2 text-white/80 hover:text-white transition-colors text-sm my-20"
Expand Down
17 changes: 11 additions & 6 deletions src/app/(pages)/chat/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -419,12 +419,17 @@ const ChatPage = () => {
</div>

<div className="p-4 border-t border-gray-200">
<div className="flex items-center">
<div className="w-8 h-8 bg-gray-300 rounded-full mr-2 flex items-center justify-center">
{user?.firstName?.charAt(0) || user?.username?.charAt(0) || 'U'}
</div>
<div className="text-sm">{user?.firstName || user?.username || 'User'}</div>
</div>
<a href="/dashboard" rel="noopener noreferrer">
<h3 className="text-sm font-semibold text-gray-700 mb-2">
{`Train Your own language Model >`}
</h3>
{/* <div className="flex items-center">
<div className="w-8 h-8 bg-gray-300 rounded-full mr-2 flex items-center justify-center">
{user?.firstName?.charAt(0) || user?.username?.charAt(0) || 'U'}
</div>
<div className="text-sm">{user?.firstName || user?.username || 'User'}</div>
</div> */}
</a>
</div>
</div>

Expand Down
50 changes: 38 additions & 12 deletions src/app/(pages)/dashboard/page.tsx
Original file line number Diff line number Diff line change
@@ -1,13 +1,41 @@
'use client';
import React from 'react';
import React, { useState, useEffect } from 'react';
import Head from 'next/head';
import { Sidebar } from '@components/navigation/Sidebar';
import { Header } from '@components/navigation/Header';
import { MainContent } from '@components/dashboard/MainContent';
import { useDashboardData } from '@hooks/useDashboardData';

export default function Dashboard() {
const { taskGroups, activeTab, setActiveTab } = useDashboardData();
const pageBreadcrumbMap: Record<string, string[]> = {
dashboard: ['Dashboard'],
training: ['Models', 'Training'],
logs: ['Models', 'Logs'],
evaluate: ['Models', 'Evaluate & Chat'],
todo: ['Tasks', 'To Do'],
favorites: ['Datasets', 'Favorites'],
uploads: ['Datasets', 'Uploads'],
labeling: ['Datasets', 'Labeling'],
created: ['Datasets', 'Created by me'],
'project-1': ['Projects', 'Adrian Bert - CRM Dashboard'],
'project-2': ['Projects', 'Trust - SaaS Dashboard'],
'project-3': ['Projects', 'Pertamina Project'],
'project-4': ['Projects', 'Garuda Project'],
settings: ['Settings'],
help: ['Help Center'],
};

const Dashboard = () => {
const [activePage, setActivePage] = useState('dashboard');
const [breadcrumbs, setBreadcrumbs] = useState<string[]>(['Dashboard']);
const [notifications] = useState(2);

useEffect(() => {
const newBreadcrumbs = pageBreadcrumbMap[activePage] || ['Dashboard'];
setBreadcrumbs(newBreadcrumbs);
}, [activePage]);

const handleNavigate = (page: string) => {
setActivePage(page);
};

return (
<div className="min-h-screen bg-gray-50">
Expand All @@ -19,21 +47,19 @@ export default function Dashboard() {

<div className="flex h-screen">
{/* Sidebar */}
<Sidebar />
<Sidebar onNavigate={handleNavigate} activePage={activePage} />

{/* Main Content */}
<div className="flex-1 flex flex-col overflow-hidden">
{/* Header */}
<Header breadcrumbs={['Projects', 'Adrian Bert - CRM Dashboard']} />
<Header breadcrumbs={breadcrumbs} notifications={notifications} />

{/* Main content area */}
<MainContent
taskGroups={taskGroups}
activeTab={activeTab}
setActiveTab={setActiveTab}
/>
<MainContent activePage={activePage} />
</div>
</div>
</div>
);
}
};

export default Dashboard;
Loading
Loading