* feat: update landing page
* feat: Add favicon and SEO (JSON-LD schema, meta tags)
- Add favicon image
- Add JSON-LD schema for Hackathon event
- Add react-helmet-async for managing meta tags
* chore: remove react-helmet-async
* chore: update landing page
* chore: update UI for signup and login
- add back button for better UX
* feat: add image loading state and skeleton UI for team dashboard
* fix: landing navbar not sticky to top, fix onboarding UI
* feat(hackathon): update UI
- Update dashboard, onboarding user, edit profile, and team layout
to make it more consistent
* fix: optimize placeholder banner image & minor fix dark mode
* feat(hackathon): update landing page dark mode color scheme
* feat(hackathon): update auth page dark mode color scheme
* feat(hackathon): dashboard UI improvement and dark mode adjustment
* feat(hackathon): browse team page
- update dark mode color scheme
- add some border style to give outline and depth
- change emoji to icon
* feat(hackathon): update team page
- update dark mode color scheme for team page: view, team edit,
and submit project page
- fix bug in chat where messages are displayed double
- make the form field size consistent
* feat(hackathon): update dark mode onboarding and edit profile
---------
Co-authored-by: Maulana Sodiqin <sodiqincahyana1@gmail.com>
Co-authored-by: Muhammad Zakir Ramadhan <61570975+zakirkun@users.noreply.github.com>
- update dark mode color scheme for team page: view, team edit,
and submit project page
- fix bug in chat where messages are displayed double
- make the form field size consistent
- Add line-clamp-3 to limit bio to 3 lines
- Add wrap-break-word to handle long strings without spaces
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add totalImagesToLoad, handleImageLoad, handleImageError
- Disable image loading overlay to prevent blocking UI
- Fix ReferenceError: totalImagesToLoad is not defined
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
* feat: update landing page
* feat: Add favicon and SEO (JSON-LD schema, meta tags)
- Add favicon image
- Add JSON-LD schema for Hackathon event
- Add react-helmet-async for managing meta tags
* chore: remove react-helmet-async
* chore: update landing page
* chore: update UI for signup and login
- add back button for better UX
* feat: add image loading state and skeleton UI for team dashboard
* fix: landing navbar not sticky to top, fix onboarding UI
* feat(hackathon): update UI
- Update dashboard, onboarding user, edit profile, and team layout
to make it more consistent
* fix: optimize placeholder banner image & minor fix dark mode
---------
Co-authored-by: Maulana Sodiqin <sodiqincahyana1@gmail.com>
Co-authored-by: Muhammad Zakir Ramadhan <61570975+zakirkun@users.noreply.github.com>
- Replace basic select dropdown with CitySelect component
- Consistent with create team and profile pages
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Remove all console.log statements from middleware, layout, and pages
- Replace alert with toast for onboarding error messages
- Delete unused page-original.tsx backup file
- Keep console.error for actual error debugging
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add dark mode styling to Input component (bg, text, border, placeholder)
- Add dark mode styling to Textarea component
- Update profile page with blurred backdrop overlay
- Add shadow and proper dark mode to modal container
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Apply rose-pine dark theme across all pages for darker appearance
- Update Button component with dark mode variants
- Replace basic city select with searchable CitySelect on create team page
- Show Dashboard button in navbar when user is authenticated
- Apply dark mode styling to onboarding, team pages, and user profile
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add loading state check before leader validation to prevent race condition
- Fix useRemoveMember hook to use Supabase directly instead of missing API endpoint
- Leader check now waits for team data to load before showing Access Denied
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add ThemeProvider with system/light/dark mode support and localStorage persistence
- Add ThemeToggle component for pages without sidebar (landing, login, signup)
- Enable class-based dark mode in Tailwind CSS v4 via @custom-variant
- Add dark mode classes to landing page, login, signup, and all dashboard pages
- Keep IMPHNEN logo blue in dark mode, invert Kolosal logo
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add isMember check to only show Quick Actions to team members
- Hide submission status from non-members
- Non-members can only view team info, leader, and member list
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Update teams/[teamId]/layout.tsx to use Sidebar component
- Update users/[userId]/layout.tsx to use Sidebar component
- Now matches dashboard layout with sidebar navigation
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Set consistent h-[42px] height for both search and city filter inputs
- Add 300ms debounce to search to reduce API calls while typing
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Replace browse teams city dropdown with searchable CitySelect component
- Remove "Back to Dashboard" button from team detail page (uses sidebar nav)
- Add cities constant to service library for validation
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add .eq('status', 'pending') filter to useTeamJoinRequests hook
- Add toast notifications for approve/reject actions on members page
- Parse Supabase error messages to show user-friendly error text
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
* feat: enhance team browsing with member count and view team option
* feat: add default banner image for teams without a custom banner
* feat: implement user profile page and user layout component
* feat: improve browse team filtering layout
* feat: limit join request button visibility based on team member count
* feat: enhance user profile and team dashboard layouts for improved responsiveness
* feat: add location, bio, and skills fields to user profile schema and form
* feat: enhance team display and user information layout for better readability
* feat: update join request button visibility logic based on user team membership
* feat: enhance team and user profile layouts with improved text truncation and responsiveness
Previously approved/rejected requests were still showing in the list.
Now only pending requests are displayed.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Removed permission checking logic that was causing "Cannot read properties
of null (reading 'name')" error.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add NX_DAEMON=false to all Dockerfiles to prevent slow daemon startup
- Add --env-file flag to hackathon build for proper env var substitution
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Added --progress=plain to show live build output
- Enabled DOCKER_BUILDKIT=1 for better build performance
- Now you can see what's actually happening instead of appearing stuck
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Added concurrency group 'deploy-vps' to all deployment workflows
- Prevents multiple deployments from running simultaneously on VPS
- Deployments now queue and run one at a time
- Fixes resource exhaustion when all apps deploy at once
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Added command_timeout: 30m to all SSH deployment workflows
- Prevents timeout issues during Docker builds
- Applies to landing, hackathon, gacha, dimentorin, and backoffice
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Changed from apps/hackathon/.env to root .env.local
- Docker-compose expects .env.local in root directory
- This ensures Supabase env variables are properly loaded during build
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Created CitySelect component with real-time filtering
- Supports 516 Indonesian cities with array filtering
- Added search functionality for better UX
- Integrated with react-hook-form in user onboarding
- Includes clear button and auto-close on outside click
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Updated all deployment workflows to create .env files with Supabase credentials
- Added VITE_SUPABASE_URL and VITE_SUPABASE_ANON_KEY for Vite apps
- Added NEXT_PUBLIC_SUPABASE_URL and NEXT_PUBLIC_SUPABASE_ANON_KEY for Next.js landing app
- Changed from single-line echo to multi-line cat heredoc for better .env management
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Add git reset --hard before pull to discard any local changes on server:
- Fetch latest changes from origin
- Reset to origin/develop to discard local modifications
- Then pull to update
This fixes deployment failures caused by uncommitted local changes on the server.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Remove automatic redirect from "/" to login/dashboard
- Allow everyone to view the hackathon landing page
- Users can still click "Daftar Sekarang" to go to login
This fixes the issue where the landing page immediately redirected to login.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Replace npm install with npm ci and optimization flags to fix deployment timeouts:
- Use npm ci for faster, more reliable installs
- Add --prefer-offline to use cached packages
- Add --no-audit and --no-fund to skip unnecessary checks
- Optimize landing.Dockerfile to copy package files before installing
This resolves the Docker build EOF errors during deployment.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Triggering deployment for all apps to deploy the following changes:
- Fixed circular dependency between utils and service libraries
- Added missing auth hooks (usePostVerifyEmail, useGoogleCallback, etc.)
- Moved useAuthStore from utils to service
- All apps now build successfully
Apps to deploy:
- hackathon
- gacha
- dimentorin
- backoffice
- landing
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Added missing React Query hooks that were being imported but not exported:
- usePostLogin
- usePostRegister
- usePostVerifyEmail
- usePostSendOtp
- useGoogleCallback
These hooks wrap the existing auth API functions with React Query's useMutation.
Fixes build errors:
- gacha:build - "usePostVerifyEmail" is not exported
- dimentorin:build - "useGoogleCallback" is not exported
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Moved useAuthStore from utils to service to break circular dependency:
- utils was importing from service (supabase client, types)
- service was importing from utils (useAuthStore)
- Solution: moved useAuthStore and related storage utilities to service
Changes:
- Created libs/service/src/storage/ with cookies.ts and local-storage.ts
- Moved use-auth-store.ts from utils/hooks to service/hooks/auth
- Updated all 20+ files to import useAuthStore from service instead of utils
- Removed useAuthStore export from utils
- Added storage exports to service index
This fixes the build error: "Could not execute command because the task graph has a circular dependency"
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Implemented `getGoogleAuthUrl` and `postGoogleCallback` in auth API.
- Added corresponding hooks `useGoogleAuth` and `useGoogleCallback` for handling Google authentication.
feat(api): enhance API structure with mentors and upload services
- Created `mentors` and `upload` API modules with respective services for managing mentor details and file uploads.
- Added session management utilities to handle authentication tokens in cookies.
feat(users): expand user service with detailed user management
- Enhanced user service to include detailed user information and update capabilities.
- Added hooks for fetching and updating user data.
feat(hooks): introduce hooks for mentors and upload functionalities
- Added hooks for fetching mentor details and updating mentor information.
- Implemented hooks for file upload, avatar upload, and CV upload with validation.
refactor(types): organize and extend type definitions
- Introduced new types for mentors and enhanced existing user types.
- Re-exported user-related types for better accessibility.
chore: update index files to include new services and hooks
- Updated index files to export new services and hooks for mentors and uploads.
* 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>
* 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
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>.
2.**Backoffice** - Application for internal management.
3.**Dimentorin** - Application for mentoring services.
1.**Gacha** - Application for <a href="https://gacha.imphnen.dev/" target="_blank">Gacha Website</a>.
2.**Backoffice** - Application for <a href="https://gacha.imphnen.dev/" target="_blank">Internal Management Website</a>.
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
@@ -24,6 +25,15 @@ This repository is a **monorepo** for all frontend services of IMPHNEN. The mono
## 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
Use the following commands to run in development mode:
@@ -40,6 +50,10 @@ Use the following commands to run in development mode:
```sh
npm run dimentorin:dev
```
- **Landing Page**:
```sh
npm run landing:dev
```
### Build
@@ -57,6 +71,10 @@ Use the following commands to build the applications:
```sh
npm run dimentorin:build
```
- **Landing Page**:
```sh
npm run landing:build
```
### Production
@@ -74,6 +92,10 @@ Use the following commands to run the applications in production mode:
```sh
npm run dimentorin:prod
```
- **Landing Page**:
```sh
npm run landing:prod
```
### Storybook
@@ -87,7 +109,6 @@ This repository uses Storybook to develop, test, and document UI components in a
npm run ui:storybook
```
- **Run Unit Test**
This command runs unit tests for the UI components to ensure they function as expected.
description="Lorem ipsum dolor sit amet, consectetur adipiscing elit. In convallis tincidunt nisl, id consequat mi malesuada vel. Nulla facilisi. Nam in turpis ligula."
<Textareaplaceholder="Masukkan url API notifikasi yang akan digunakan"className="w-full h-40"/>
</div>
<divclassName="flex justify-end gap-5">
<Buttontype="button"variant="bordered">
Batal
</Button>
<Buttontype="button">
Simpan
</Button>
</div>
</div>
</div>
)
}
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.