- For(): bungkus item dalam Fragment dgn key=idx — hilangkan warning
'Each child in a list should have a unique key prop' di semua list backoffice
- Dashboard backoffice: fetch per_page=100 (bukan 5/1) supaya stat total
akurat; Mentor Terdaftar dihitung dari user list role=Mentor (bukan
unique mentor_id dalam 5 sesi pertama)
Halaman yang belum ada di FE: feedback mentor setelah sesi selesai. Figma punya 'Modals - Feedback 1' (rating 1-5 + 2 pertanyaan pilihan) dan 'Modals - Feedback 2' (3 textarea: suka/tingkatkan/testimoni). BE sudah punya POST /dimentorin/sessions/{id}/feedback/create.
- BARU mentoring/_components/feedback-modal.tsx: modal 2 step (rating bintang + kebermanfaatan + rekomendasi → textarea suka/tingkatkan/testimoni), validasi step (Lanjut disabled sampai rating+opsi dipilih), submit gabung jadi feedback text + rating, reset state tiap buka
- my-sessions: tombol '⭐ Beri Feedback' muncul untuk sesi status completed; modal ter-integrasi; invalidate my-sessions + mentor-stats setelah submit
- Verifikasi end-to-end via browser: tombol muncul, modal step 1 → rating 5 + opsi → step 2 → isi textarea → Kirim → POST 200 feedback+rating tersimpan di DB (sesi Status Test di-set completed utk test lalu di-reset)
Node 216:740 = canvas penuh (bukan cuma design system). Dashboard User & Mentor di Figma punya sidebar + topbar + overview stats yang BELUM ada di FE. Implementasi:
- BARU apps/.../mentoring/_components/dashboard-layout.tsx: DashboardLayout/DashboardSidebar/DashboardHeader shared (sidebar sticky, decode JWT untuk inisial/email, logout via SessionToken.remove)
- BARU /mentoring/dashboard (Dashboard User sesuai Figma 1290:4808): welcome banner 'Selamat Datang di Dimentorin.dev' + CTA Temukan Roadmapnya, Overview stats (Mentoring Session dari sessions API, Article Submitted dari articles, Article Published dari completed sessions), Roadmaps progress card 'Front End Basic' dari materials API
- my-sessions dipindah ke layout dashboard (sidebar user, nav aktif)
- mentor-dashboard full rewrite (Figma 1340:4285): sidebar mentor (Dashboard/Mentoring Setup/List Mentee/Feedback), overview stats (Your Rating dari mentor stats avg_rating, Session Complete, Mentee Impacted unique, Total Feedback), tabs Sesi Masuk/Setup/Mentee/Feedback dengan data sessions API
- Header: tambah menu Dashboard
Dengan Figma PAT sekarang bisa akses node 216:740 = canvas 'Dimentorin By IMPHNEN' (berisi SEMUA halaman, bukan cuma design system). Hasil audit konten:
- Halaman baru /jadi-sensei: landing rekrutmen mentor persis Figma (Mentor Page 1686:12228)
* Hero 'Jadi Sensei di Dunia IT?' + stats 1000+ Kohai Menunggu / 500+ Sensei Aktif + tombol 'Mulai Jadi Sensei'
* 'Kenapa Harus Join Guild Sensei Kami? 🔥' - 3 kartu: Power-Up Para Kohai, Skill Jadi Gold Mine, Legendary Sensei Status
* Testimonial 'What the Legendary Sensei Says' (Riko 4.8/5.0)
* FAQ 'Kata Para Sensei Legendaris' - income 100rb/sesi/45 menit, sistem pembayaran, flexible sesi
* CTA 'Ready to become the Legendary Sensei?' + 'Daftar Sekarang'
- Fix typo 'Bagaiamana' -> 'Bagaimana', 'Frequently Ask Question' -> 'Frequently Asked Questions'
- Booking modal: tombol step CV (profile) jadi 'Pembayaran' sesuai Figma (Modals Appointment Mentor 3)
- Verifikasi teks persis via Figma REST API: Home/CTA/WhatWeOffer/Modal sudah MATCH (koreksi temuan vision yang keliru)
- Komponen baru MentorAvatar: gradient unik per nama (hash), inisial nama, reusable (sm/md/lg + textClassName)
- Kartu mentor: ganti img testimonial.webp statis -> avatar inisial gradient (MU, dll)
- Detail mentor profile: avatar besar + fix hardcoded tanggal 'Jum, 4 April 2025' -> tanggal dinamis id-ID
- Senpai Resume: fallback dinamis dari data mentor (role/experience/expertise/industries/languages) saat bio kosong, bukan 'Belum ada deskripsi'
- Booking modal topic step: ganti nama mentor hardcoded 'Muhammad Firdaus Oi Oi Oi' -> dari prop mentor + avatar
- Booking modal payment step: avatar mentor di summary
* fix: docker
* fix landing
* chore(landing): add outputFileTracingRoot to next config
* ci: add github workflow for landing deployment via ssh and docker compose
* chore: add docker-compose file for landing app build and run
* feat docker
* fix: correct link for Roadmap navigation item
* feat: add feature request and projects voting components
* fix: correct spelling of 'Certificate' in ProjectsVote component
* feat: add Request Feature popup with responsive dialog and drawer components
* feat: enhance Header component with mobile menu animations and improved navigation styling
* refactor: simplify Header component by removing unused scroll handling and improving mobile menu structure
* fix: replace motion span with static span for header underline
* fix: update FeatureRequestCTA text for clarity and adjust page layout margins
* fix: remove DialogDescription from RequestFeaturePopup and update textarea placeholder for clarity
* fix: remove DrawerDescription from RequestFeaturePopup for cleaner UI
* fix: remove unused icon exports from icons
* fix: replace XIcon with LuX in DialogClose for consistency
* fix: remove unused icon export from index for cleaner module structure
* feat: setup openapi libs for landing
* feat: seperate landing layouts
* feat: movee landing providers
* feat: add auth layout
* feat: implement cookie management for access and refresh tokens
* feat: replace Inter font with Bai Jamjuree in layout and add font utility
* feat: add signin
* feat: add Poppins font to the font utility
* feat: expand theme colors in index.css for improved styling options
* feat: update dependencies and enhance button and form components with new variants and context
* feat: move old components to __old__ dir
* feat: add react query support
* feat: hide the footer
* fix: header style
* feat: replace Image component with LogoSimple in Header and update Logo component to accept props
* fix: update label for tutorial stat in hero-stats.json
* feat: implement EventsPage component with event listing and details
* feat: add signup button and page
* feat: add HERO_CONTENT data and integrate into Hero component
* fix: update navigations import to uppercase and add missing Testimoni entry
* feat: implement testimonials display and add submission page
* fix: correct link path for testimonial submission
* feat: add communites component and integrate social links from JSON data
* fix: adjust grid gap in Communities component for better layout
* fix: update font imports in layout components for consistency
* fix: replace text logo with LogoSimple component in Footer and restore Footer in Layout
* feat: add TestimonialSection component and update testimonials data
* fix: update section ID from 'komunitas' to 'community' for consistency
* feat: add CTASection component with interactive elements and background pattern
* fix: update join URL in hero content for consistency
* fix: update text in CTASection for improved emphasis and consistency
* feat: add CommunitySection component and integrate it into the main page
* feat: update Footer component to use dynamic navigation and social links
* feat: implement HeroSection component with dynamic content and animations
* refactor: replace hardcoded testimonials with dynamic data from JSON
* feat: add signup page
* feat: integrate Turnstile captcha verification in signup process
* feat: implement verification page
* feat: add signin link to the signup page
* feat: add "Forgot Password?" link to the signin form
* refactor: clean up unused ThemeProvider code and CSS variables
* feat: add base styles for borders and background to improve UI consistency
* feat: implement forgot password functionality with validation and UI components
* fix: update password validation rules for clarity and consistency
* feat: enable rich colors for Toaster component in layout
* feat: implement reset password functionality with validation and UI components
* feat: implement Turnstile captcha verification for forgot password and signup actions
* refactor: remove console log and enhance error handling in signin and resend OTP actions
* feat: add navigation entries for Roadmap and Artikel sections
* feat: create initial Page component for articles section
* feat: update footer component with additional social media links and icons
* feat: remove all unused components in landing
* chore: add @radix-ui/react-label deps
* feat: wrap VerificationTabs in Suspense
* feat: update .env.example to include TURNSTILE_SECRET_KEY and correct NEXT_PUBLIC_TURNSTILE_SITEKEY
* feat(gacha): register and login integration
* fix: navbar and gacha landing page
- display fullname when user authenticated
- fix styling and responsive
* fix: minor fix UI
* chore: remove all references to PayloadCMS
* fix: nextjs landing utils
* feat: refactor community, features, hero, learning resources, and testimonials components to use external JSON data
* fix:remove hero logo box
* fix: remove unused image in public
* fix: change logo.png to logo.webp
* fix: update button styles for improved visibility
* chore: restructure component organization
* fix: update import path for global styles in layout component
* fix: adjust alignment of hero stats section for better layout
* fix: update testimonials placeholder sample data
* fix: update header component to use router for navigation and add signin page
* feat: integrate payload cms to landing page
* feat: add payload configuration and update TypeScript target
* fix: update TypeScript paths for payload configuration
* refactor: update config import paths to use local payload.config
* fix: update quotation marks for testimonials to use HTML entities
* fix: include withPayload in Next.js plugins for proper configuration
* feat: implement HeroSection global configuration and integrate with Hero component
* feat: add FeaturesSection global configuration and integrate with Features component
* feat: add revalidate constant to control page revalidation interval
* refactor: optimize data fetching by using Promise.all
* fix: update revalidation interval to 10 seconds
* feat: add CommunitiesSection configuration and integrate with Community component
* refactor: move global section functions to services directory
* feat: add support for s3 bucket for media
* feat: update Community component to use Iconify for icons and adjust CommunitiesSection configuration
* feat: replace Link component with Button for improved button styling in Community component
* feat: update FeaturesSection to use Iconify icons and adjust icon properties
* feat: add heroImage field to HeroSection and implement image formatting utility
* feat: add Learning Resources section with dynamic data fetching and UI integration
* feat: enhance LearningResourcesSection with primary and secondary button links
* refactor: reorganize layout structure by moving Header and Footer components to RootLayout
* feat: implement Testimonials section with dynamic data fetching and UI integration
* feat: simplify joinTitle rendering in Testimonials section
* feat: implement CallToAction section with dynamic data fetching and UI integration
* feat: update CallToActionSection label and wrap Discord button in link
* feat: update button components to use onClick for external links and improve styling
* feat: wrap logo image in a link to navigate to the homepage
* fix: supress scss deps warning
* fix: add placeholder to .env.example
* chore: add environment placeholder variables for CMS configuration in test build workflow
* fix: remove unused environment variables from test build workflow
* fix: text color (#26)
* chore: update action
* feat: integrate payload cms to landing page
* feat: add payload configuration and update TypeScript target
* fix: update TypeScript paths for payload configuration
* refactor: update config import paths to use local payload.config
* fix: include withPayload in Next.js plugins for proper configuration
* feat: implement HeroSection global configuration and integrate with Hero component
* feat: add FeaturesSection global configuration and integrate with Features component
* feat: add revalidate constant to control page revalidation interval
* refactor: optimize data fetching by using Promise.all
* fix: update revalidation interval to 10 seconds
* feat: add CommunitiesSection configuration and integrate with Community component
* refactor: move global section functions to services directory
* feat: add support for s3 bucket for media
* feat: update Community component to use Iconify for icons and adjust CommunitiesSection configuration
* feat: replace Link component with Button for improved button styling in Community component
* feat: update FeaturesSection to use Iconify icons and adjust icon properties
* feat: add heroImage field to HeroSection and implement image formatting utility
* feat: add Learning Resources section with dynamic data fetching and UI integration
* feat: enhance LearningResourcesSection with primary and secondary button links
* refactor: reorganize layout structure by moving Header and Footer components to RootLayout
* feat: implement Testimonials section with dynamic data fetching and UI integration
* feat: simplify joinTitle rendering in Testimonials section
* feat: implement CallToAction section with dynamic data fetching and UI integration
* feat: update CallToActionSection label and wrap Discord button in link
* feat: update button components to use onClick for external links and improve styling
* feat: wrap logo image in a link to navigate to the homepage
* fix: supress scss deps warning
* fix: add placeholder to .env.example
* chore: add environment placeholder variables for CMS configuration in test build workflow
* fix: remove unused environment variables from test build workflow
* fix: remove mistakenly added env from test-build workflow
---------
Co-authored-by: Fahim Ardani <fahimardani25@gmail.com>
Co-authored-by: Maulana Sodiqin <53475078+maulanasdqn@users.noreply.github.com>
This repository is a **monorepo** for all frontend services of IMPHNEN. The monorepo includes three main applications:
This repository is a **monorepo** for all frontend services of IMPHNEN. The monorepo includes three main applications:
1.**Gacha** - Application for <a href="https://gacha.imphnen.dev/" target="_blank">gacha website</a>.
1.**Gacha** - Application for <a href="https://gacha.imphnen.dev/" target="_blank">Gacha Website</a>.
2.**Backoffice** - Application for internal management.
2.**Backoffice** - Application for <a href="https://gacha.imphnen.dev/" target="_blank">Internal Management Website</a>.
3.**Dimentorin** - Application for mentoring services.
3.**Dimentorin** - Application for <a href="https://dimentorin.imphnen.dev/" target="_blank">Mentoring Service</a>.
4.**Landing Page** - Application for <a href="https://imphnen.dev/" target="_blank">Landing Page</a>.
## How to install
## How to install
@@ -24,6 +25,15 @@ This repository is a **monorepo** for all frontend services of IMPHNEN. The mono
## How to run
## How to run
### Setup Environment Variables
Before running the applications, you need to set up the environment variables. You can do this by copying the `.env.example` file to `.env` and modifying the values according to your needs.
```sh
cd apps/{appname}
cp .env.example .env
```
### Development
### Development
Use the following commands to run in development mode:
Use the following commands to run in development mode:
@@ -40,6 +50,10 @@ Use the following commands to run in development mode:
```sh
```sh
npm run dimentorin:dev
npm run dimentorin:dev
```
```
- **Landing Page**:
```sh
npm run landing:dev
```
### Build
### Build
@@ -57,6 +71,10 @@ Use the following commands to build the applications:
```sh
```sh
npm run dimentorin:build
npm run dimentorin:build
```
```
- **Landing Page**:
```sh
npm run landing:build
```
### Production
### Production
@@ -74,19 +92,22 @@ Use the following commands to run the applications in production mode:
```sh
```sh
npm run dimentorin:prod
npm run dimentorin:prod
```
```
- **Landing Page**:
```sh
npm run landing:prod
```
### Storybook
### Storybook
This repository uses Storybook to develop, test, and document UI components in an isolated and interactive environment. Below are the commands to work with Storybook:
This repository uses Storybook to develop, test, and document UI components in an isolated and interactive environment. Below are the commands to work with Storybook:
- **Run Storybook**
- **Run Storybook**
This command starts Storybook in development mode, allowing you to view and test UI components interactively.
This command starts Storybook in development mode, allowing you to view and test UI components interactively.
Some files were not shown because too many files have changed in this diff
Show More
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.