diff --git a/apps/hackathon/src/app/dashboard/page.tsx b/apps/hackathon/src/app/dashboard/page.tsx
index 27a597e..ffe5f2d 100644
--- a/apps/hackathon/src/app/dashboard/page.tsx
+++ b/apps/hackathon/src/app/dashboard/page.tsx
@@ -11,6 +11,9 @@ import { Button } from '@imphnen-frontend-service/ui/atoms';
import { Icon } from '@iconify/react';
import ProfilePage from '../profile/page';
+// Team features deadline: 2025-11-30 23:59:00 WIB (UTC+7)
+const TEAM_FEATURES_DEADLINE = new Date('2025-11-30T16:59:00Z');
+
type Invitation = {
id: string;
team: {
@@ -34,6 +37,9 @@ type Invitation = {
const DashboardPage: FC = (): ReactElement => {
const { session } = useAuthStore();
const [showProfileModal, setShowProfileModal] = useState(false);
+
+ // Check if team features are closed
+ const isTeamFeaturesClosed = new Date() >= TEAM_FEATURES_DEADLINE;
// Lock background scroll when profile modal is open
useEffect(() => {
if (showProfileModal) {
@@ -93,6 +99,14 @@ const DashboardPage: FC = (): ReactElement => {
Team Invitations ({invitations.length})
+ {isTeamFeaturesClosed && (
+
+
+
+ Team features are closed. You can no longer accept invitations.
+
+
+ )}
{invitations.map((invitation) => (
{
{invitation.inviter?.fullname ?? 'Unknown User'}
-
-
-
-
+ {!isTeamFeaturesClosed && (
+
+
+
+
+ )}
))}
diff --git a/apps/hackathon/src/app/teams/[teamId]/page.tsx b/apps/hackathon/src/app/teams/[teamId]/page.tsx
index 6360379..7dfeec7 100644
--- a/apps/hackathon/src/app/teams/[teamId]/page.tsx
+++ b/apps/hackathon/src/app/teams/[teamId]/page.tsx
@@ -17,6 +17,9 @@ import { Icon } from '@iconify/react';
const MAX_TEAM_MEMBERS = 5;
+// Team features deadline: 2025-11-30 23:59:00 WIB (UTC+7)
+const TEAM_FEATURES_DEADLINE = new Date('2025-11-30T16:59:00Z');
+
// Image component with loading state
const ImageWithLoader: FC<{
src: string;
@@ -52,6 +55,9 @@ const TeamDashboardPage: FC = (): ReactElement => {
const { teamId } = useParams<{ teamId: string }>();
const navigate = useNavigate();
const { session } = useAuthStore();
+
+ // Check if team features are closed
+ const isTeamFeaturesClosed = new Date() >= TEAM_FEATURES_DEADLINE;
const [showInviteModal, setShowInviteModal] = useState(false);
const [showJoinRequestsModal, setShowJoinRequestsModal] = useState(false);
const [showLeaveModal, setShowLeaveModal] = useState(false);
@@ -369,8 +375,8 @@ const TeamDashboardPage: FC = (): ReactElement => {
Team Management
- {/* Hide invite/join management after submission */}
- {!team.has_submission && (
+ {/* Hide invite/join management after submission or deadline */}
+ {!team.has_submission && !isTeamFeaturesClosed && (
<>
>
)}
- {!team.has_submission && (
+ {!team.has_submission && !isTeamFeaturesClosed && (