Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
67 commits
Select commit Hold shift + click to select a range
1d9c2b2
Fixed navbar. Now behaves depending on the path the user is in
GuiBaracho Feb 21, 2024
37bd88c
Changed user to be accepted as User instead of any. Clarified TODO co…
GuiBaracho Mar 12, 2024
f57111f
Merge pull request #3 from sinfo/bottomNavBar
GuiBaracho Mar 12, 2024
44fe52d
Implement My CV page (with upload, update, delete and download cv ser…
anees-asghar Mar 10, 2024
89eece1
Uncomment BottomNavbar
anees-asghar Mar 16, 2024
00a43fe
Add btn-red class
anees-asghar Mar 16, 2024
c6aae3d
adapt existing code to 2024 webapp version (#8)
anees-asghar Oct 23, 2024
2c69729
integrate mock service worker (#18)
anees-asghar Nov 23, 2024
dbab7ce
allow all image domains
anees-asghar Dec 19, 2024
824079f
add mock data to implement homepage
anees-asghar Dec 19, 2024
b9cb248
implement homepage
anees-asghar Dec 19, 2024
b98f415
Add cards' components
nalves599 Jan 5, 2025
3a3e912
Add companies page
nalves599 Jan 5, 2025
683e99f
Refactor tiles to use list/grid card
nalves599 Jan 5, 2025
bb0928a
Fix code to build
nalves599 Jan 5, 2025
7fad816
Add stand details
nalves599 Jan 6, 2025
0453837
Add session and speaker pages
nalves599 Jan 6, 2025
226a03d
Refactor navbar to be dynamic
nalves599 Jan 7, 2025
a6f2cc6
Start profile and schedule
nalves599 Jan 8, 2025
bedbb7f
Improve schedule, profile and achievements
nalves599 Jan 10, 2025
986752d
Use SINFO colors
nalves599 Jan 10, 2025
d1354f2
Add CurriculumVitae and Pick a Winner
nalves599 Jan 13, 2025
6402b5b
Add session check-in
nalves599 Jan 14, 2025
ebdfb17
Add promote
nalves599 Jan 15, 2025
aebd41b
Add Calendar button on sessions
nalves599 Jan 16, 2025
5469edf
Add ShowMore button
nalves599 Jan 24, 2025
0fe9a86
Add QR Scan
nalves599 Jan 25, 2025
199fbba
Fix CheckIn and add Participants page
nalves599 Jan 25, 2025
b8b45ec
Add CI/CD
nalves599 Jan 29, 2025
9305b34
Add filtering by kind, day and place in ScheduleTable
Francisca105 Feb 2, 2025
9134b01
Implement sidebar
anees-asghar Feb 2, 2025
08340d3
Improve Toolbar accessibility
nalves599 Feb 2, 2025
b0db5ce
Add Prizes screen
nalves599 Jan 30, 2025
9228654
Remove Hacky from QR-Code page
nalves599 Feb 2, 2025
229c287
Fix Sidebar and screen scroll
nalves599 Feb 3, 2025
e2ea91d
Add profile information to user
nalves599 Feb 3, 2025
ad233dd
Update Code of Conduct link
nalves599 Feb 3, 2025
f70976d
Fix margin inside containers
nalves599 Feb 6, 2025
9a9be16
Fix height on layout
nalves599 Feb 6, 2025
68050c3
Bump Tailwindcss 3.1.0->3.4.17
nalves599 Feb 7, 2025
40f8d01
Fix height to fit inside viewport
nalves599 Feb 7, 2025
81618ed
Add edit profile
nalves599 Feb 8, 2025
8481934
Fix build errors on edit profile implementation
anees-asghar Feb 9, 2025
4edaebd
Add mock achievements
anees-asghar Feb 9, 2025
1006f74
Implement spin the wheel section/page
anees-asghar Feb 9, 2025
bde9bf7
Add validate spin wheel button; Refactor code
anees-asghar Feb 9, 2025
be71b28
Allow edit profile image
nalves599 Feb 10, 2025
02d080a
Redeem secret achievements
GuiBaracho Feb 10, 2025
07ab261
Fix image upload on edit profile page
nalves599 Feb 11, 2025
ee094f8
Fix academic dates
nalves599 Feb 11, 2025
c440587
Fix CV link
nalves599 Feb 11, 2025
aef93d1
Add connections
nalves599 Feb 10, 2025
8fa8ea9
Fix revalidate logic
nalves599 Feb 11, 2025
8229954
Fix: Changed Stand id to standId
Francisca105 Jan 30, 2025
de09f5d
Add new components for venue stands and SVG elements
Francisca105 Jan 30, 2025
2c49eac
Remove debug console log from VenueStands component
Francisca105 Jan 30, 2025
a247a5c
Refactor CompanyStand and SessionsZone components to remove unused im…
Francisca105 Feb 7, 2025
d5d638f
Enhance VenueStands component to support company filtering and highli…
Francisca105 Feb 7, 2025
35934d2
Added to the Company page navigation links to venue
Francisca105 Feb 8, 2025
bda1ef9
Update MOCK_COMPANY data structure to use 'standId' instead of 'id' f…
Francisca105 Feb 11, 2025
a140a50
Update connection steps text
anees-asghar Feb 13, 2025
210f5c9
Add link to connections in sidebar
anees-asghar Feb 13, 2025
ac9344c
Left align the colored bullets in the profile page
anees-asghar Feb 13, 2025
778a330
Show consistent session colors
anees-asghar Feb 13, 2025
64e3f63
Fix build errors/warning
anees-asghar Feb 13, 2025
bd8a6a0
Use different approach to sinfo session colors
anees-asghar Feb 13, 2025
b96856c
Fix Linkedin login
nalves599 Feb 13, 2025
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
8 changes: 8 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
Dockerfile
.dockerignore
node_modules
yarn-debug.log
README.md
.next
.git
.env*.local
7 changes: 5 additions & 2 deletions .env.local
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
EVENT_EDITION = mock-edition-id

WEBAPP_URL = http://localhost:3000

CANNON_URL = https://cannon-staging-dev.sinfo.org/
CANNON_URL = https://cannon-staging-dev.sinfo.org
NEXT_PUBLIC_CANNON_URL = https://cannon-staging-dev.sinfo.org

NEXTAUTH_SECRET = ZlnjlEkgh4hRX41tGPc3glhUMKJd8+HxGWqVe+l7jtA=

Expand All @@ -15,4 +18,4 @@ MICROSOFT_CLIENT_SECRET = G1.8Q~Xmy_ujVaWKSXBaxNADx9w02VjLV9T9RcA3

FENIX_URL = https://fenix.tecnico.ulisboa.pt
FENIX_CLIENT_ID = 1977390058176863
FENIX_CLIENT_SECRET = 2z4JU3SLLFqZTc2wpqjXIBcl6BCaGoREn+BzjyhZEHFxhQNAI+ypt/O5uuCTP2b+a7FBxuPTzNZXpdB4mv6cDA==
FENIX_CLIENT_SECRET = 2z4JU3SLLFqZTc2wpqjXIBcl6BCaGoREn+BzjyhZEHFxhQNAI+ypt/O5uuCTP2b+a7FBxuPTzNZXpdB4mv6cDA==
59 changes: 59 additions & 0 deletions .github/workflows/build-production.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
name: Production Build Workflow

on:
push:
tags:
- "v*.*.*"

jobs:
docker:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Set most recent tag
id: vars
run: echo ::set-output name=tag::${GITHUB_REF#refs/*/}

- uses: docker/setup-buildx-action@v3
name: Set up Docker Buildx

- uses: docker/login-action@v3
name: Login to DockerHub
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}

- uses: docker/build-push-action@v6
name: Build and Push WebApp Image
id: docker_build
with:
context: .
push: true
tags: orgsinfo/webapp:${{ step.vars.outputs.tag }}
file: Dockerfile.production

- name: WebApp Image Digest
run: echo ${{ steps.docker_build.outputs.digest }}

deploy:
needs: docker
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Set most recent tag
id: vars
run: echo ::set-output name=tag::${GITHUB_REF#refs/*/}

- name: Deploy the app to the cluster
uses: nickgronow/kubectl@master
with:
config_data: ${{ secrets.KUBE_CONFIG_DATA }}
args: set image deployment/webapp-production webapp-prod-app=orgsinfo/webapp:${{ steps.vars.outputs.tag }} --namespace=production

- name: Verify deployment
uses: nickgronow/kubectl@master
with:
config_data: ${{ secrets.KUBE_CONFIG_DATA }}
args: rollout status deployment/webapp-production --namespace=production
45 changes: 45 additions & 0 deletions .github/workflows/build-staging.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
name: Staging Build Workflow

on:
push:
branches:
- "staging"

jobs:
docker:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- uses: docker/setup-buildx-action@v3
name: Set up Docker Buildx

- uses: docker/login-action@v3
name: Login to DockerHub
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}

- uses: docker/build-push-action@v6
name: Build and Push WebApp Image
id: docker_build
with:
context: .
push: true
tags: orgsinfo/webapp:latest
file: Dockerfile.staging

- name: WebApp Image Digest
run: echo ${{ steps.docker_build.outputs.digest }}

deploy:
needs: docker
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Deploy the webapp to the cluster
uses: nickgronow/kubectl@master
with:
config_data: ${{ secrets.KUBE_CONFIG_DATA }}
args: delete pod --selector="app=webapp-staging-app" --namespace=staging
5 changes: 4 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,10 @@ yarn-error.log*
*.tsbuildinfo
next-env.d.ts

# env
.env*.local

# added
/src/app/cannon
/src/services/TokenService.ts
.vscode
.vscode
53 changes: 53 additions & 0 deletions Dockerfile.production
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
FROM node:20-alpine AS base

# 1. Install dependencies only when needed
FROM base AS deps

WORKDIR /app
COPY package.json yarn.lock ./
RUN yarn --frozen-lockfile


# 2. Build the application
FROM base AS builder

ENV NEXT_PUBLIC_CANNON_URL="https://cannon.sinfo.org"

WORKDIR /app
COPY --from=deps /app/node_modules ./node_modules
COPY . .
RUN yarn run build


# 3. Production image, copy all the files and run next
FROM base AS runner

WORKDIR /app
ENV NODE_ENV=production

# Disable Next.js telemetry during runtime
ENV NEXT_TELEMETRY_DISABLED=1

RUN addgroup -g 1001 -S nodejs
RUN adduser -S nextjs -u 1001

COPY --from=builder /app/public ./public

# Set the correct permission for prerender cache
RUN mkdir .next
RUN chown nextjs:nodejs .next

# Automatically leverage output traces to reduce image size
# https://nextjs.org/docs/advanced-features/output-file-tracing
COPY --from=builder --chown=nextjs:nodejs /app/.next/standalone ./
COPY --from=builder --chown=nextjs:nodejs /app/.next/static ./.next/static

USER nextjs

EXPOSE 3000

ENV PORT=3000
ENV HOSTNAME="0.0.0.0"

CMD ["server.js"]

53 changes: 53 additions & 0 deletions Dockerfile.staging
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
FROM node:20-alpine AS base

# 1. Install dependencies only when needed
FROM base AS deps

WORKDIR /app
COPY package.json yarn.lock ./
RUN yarn --frozen-lockfile


# 2. Build the application
FROM base AS builder

ENV NEXT_PUBLIC_CANNON_URL="https://cannon-staging.sinfo.org"

WORKDIR /app
COPY --from=deps /app/node_modules ./node_modules
COPY . .
RUN yarn run build


# 3. Production image, copy all the files and run next
FROM base AS runner

WORKDIR /app
ENV NODE_ENV=production

# Disable Next.js telemetry during runtime
ENV NEXT_TELEMETRY_DISABLED=1

RUN addgroup -g 1001 -S nodejs
RUN adduser -S nextjs -u 1001

COPY --from=builder /app/public ./public

# Set the correct permission for prerender cache
RUN mkdir .next
RUN chown nextjs:nodejs .next

# Automatically leverage output traces to reduce image size
# https://nextjs.org/docs/advanced-features/output-file-tracing
COPY --from=builder --chown=nextjs:nodejs /app/.next/standalone ./
COPY --from=builder --chown=nextjs:nodejs /app/.next/static ./.next/static

USER nextjs

EXPOSE 3000

ENV PORT=3000
ENV HOSTNAME="0.0.0.0"

CMD ["server.js"]

23 changes: 18 additions & 5 deletions next.config.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,21 @@
/** @type {import('next').NextConfig} */
const nextConfig = {
images: {
domains: ["static.sinfo.org", "sinfo.ams3.cdn.digitaloceanspaces.com", "sonaesierracms-v2.cdnpservers.net"]
}
}
output: "standalone",
images: {
remotePatterns: [
{
protocol: "http",
hostname: "**",
},
{
protocol: "https",
hostname: "**",
},
],
},
experimental: {
instrumentationHook: true,
},
};

module.exports = nextConfig
module.exports = nextConfig;
23 changes: 19 additions & 4 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,19 +9,34 @@
"lint": "next lint"
},
"dependencies": {
"@types/country-list": "^2.1.4",
"@types/node": "20.5.0",
"@types/react": "18.2.20",
"@types/react-dom": "18.2.7",
"autoprefixer": "10.4.15",
"country-list": "^2.3.0",
"eslint": "8.47.0",
"eslint-config-next": "13.4.17",
"next": "13.4.17",
"next-auth": "^4.23.1",
"eslint-config-next": "^14.1.0",
"lucide-react": "^0.469.0",
"moment": "^2.30.1",
"msw": "^2.6.5",
"next": "^14.1.0",
"next-auth": "4.24.11",
"postcss": "8.4.28",
"qr-scanner": "^1.4.2",
"react": "18.2.0",
"react-confetti": "^6.2.2",
"react-dom": "18.2.0",
"react-hook-form": "^7.54.2",
"react-image-file-resizer": "^0.4.8",
"react-qr-code": "^2.0.12",
"tailwindcss": "3.3.3",
"react-social-icons": "^6.18.0",
"react-use": "^17.6.0",
"sharp": "^0.33.5",
"tailwindcss": "3.4.17",
"typescript": "5.1.6"
},
"devDependencies": {
"prettier": "^3.4.2"
}
}
51 changes: 51 additions & 0 deletions src/app/(authenticated)/companies/CompaniesList.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
"use client";

import GridList from "@/components/GridList";
import { CompanyTile } from "@/components/company";
import { useState } from "react";

interface CompaniesListProps {
companies: Company[];
}

export default function CompaniesList({ companies }: CompaniesListProps) {
const [filteredCompanies, setFilteredCompanies] =
useState<Company[]>(companies);
let debounce: NodeJS.Timeout;

function handleSearch(text: string) {
debounce && clearTimeout(debounce);
debounce = setTimeout(() => {
if (text === "") {
setFilteredCompanies(companies);
} else {
setFilteredCompanies(
companies.filter((company) =>
company.name.toLowerCase().includes(text.toLowerCase()),
),
);
}
}, 300);
}

return (
<>
<div className="sticky top-16 pt-4 px-4 z-20">
<input
type="text"
placeholder="Search companies"
className="w-full p-2 border rounded-md shadow-md"
onChange={(e) => {
handleSearch(e.target.value);
}}
/>
</div>
<GridList title="Companies">
{filteredCompanies.length === 0 && <div>No companies found</div>}
{filteredCompanies.map((c) => (
<CompanyTile key={c.id} company={c} />
))}
</GridList>
</>
);
}
Loading