Skip to content
Closed
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
36 changes: 0 additions & 36 deletions .github/workflows/deploy.yml

This file was deleted.

50 changes: 50 additions & 0 deletions .github/workflows/preview.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
# reference: https://github.com/fbernack/github-vercel-deploy
name: Vercel Preview Deployment

env:
VERCEL_ORG_ID: ${{ secrets.VERCEL_ORG_ID }}
VERCEL_PROJECT_ID: ${{ secrets.VERCEL_PROJECT_ID }}

on:
push:
branches-ignore:
- main

jobs:

Test:
runs-on: ubuntu-latest
steps:

- uses: actions/checkout@v4

- uses: actions/setup-node@v4
with:
node-version-file: '.nvmrc'

- run: npm ci

- run: npm run test:prod

Deploy-Preview:
needs: [Test]
runs-on: ubuntu-latest
steps:

- uses: actions/checkout@v4

- uses: actions/setup-node@v4
with:
node-version-file: '.nvmrc'

- name: Install Vercel CLI
run: npm install --global vercel

- name: Pull Vercel Environment Information
run: vercel pull --yes --environment=preview --token=${{ secrets.VERCEL_TOKEN }}

- name: Build Project Artifacts
run: vercel build --token=${{ secrets.VERCEL_TOKEN }}

- name: Deploy Project Artifacts
run: vercel deploy --prebuilt --token=${{ secrets.VERCEL_TOKEN }}
32 changes: 21 additions & 11 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,31 +1,41 @@
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.

# dependencies
/node_modules
/.pnp
.pnp.js
.pnp.*
.yarn/*
!.yarn/patches
!.yarn/plugins
!.yarn/releases
!.yarn/versions

# testing
/coverage

# next.js
/.next/
/out/

# production
/build

# misc
.DS_Store
.env.local
.env.development.local
.env.test.local
.env.production.local
*.pem

# debug
npm-debug.log*
yarn-debug.log*
yarn-error.log*
package-lock.json binary
yarn.lock binary
.pnpm-debug.log*

package-lock.json binary
yarn.lock binary
# env files (can opt-in for committing if needed)
.env*

.env
# vercel
.vercel

# typescript
*.tsbuildinfo
next-env.d.ts
3 changes: 3 additions & 0 deletions .prettierignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# Ignore artifacts:
build
coverage
1 change: 1 addition & 0 deletions .prettierrc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{}
95 changes: 32 additions & 63 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,67 +1,36 @@
<div align="center">
<h1>amFOSS Events</h1>
<p>A centralized repository for landing pages of amFOSS events</p>
</div>

amFOSS Events ([events.amfoss.in](https://events.amfoss.in)) serves as the centralized repository and entry point for all recent and upcoming events organized by amFOSS. It hosts the source code and content for the landing pages of events, allowing members to manage, update, and track event-related materials in a version-controlled environment.

# Tech Stack

- **Frontend:**
- [React](https://react.dev/)
- [Tailwind CSS](https://tailwindcss.com/)

# How It Works

- Each **event** gets its own configured landing page with registration forms and event details.
- **Registration data** is stored through external APIs connected to spreadsheet backends.
- The platform includes **fallback mechanisms** to ensure pages load even when JavaScript fails.

# Getting Started

## Prerequisites

- Node.js (v16 or higher recommended)
- npm or yarn

## Installation & Running

1. **Clone this repository:**
```sh
git clone https://github.com/amfoss/Club-Events-Portal.git
cd Club-Events-Portal
```
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).

2. **Start the development server:**
```sh
npm install
npm start
```
## Getting Started

# Event Configuration

Each event can be configured by:

- **Content Updates:** Modify components in `src/components/` for event-specific information.
- **Styling:** Update CSS and Tailwind classes for event branding.
- **Registration Logic:** Configure API endpoints and validation rules in registration forms.
- **Assets:** Replace images and logos in `public/assets/` directory.

# Contributing

## Adding New Events

1. Fork the repository for the new event.
2. Update content in components.
3. Configure registration endpoints and validation.
4. Test and submit a pull request.

# Deployment
First, run the development server:

The portal is hosted at [events.amfoss.in](https://events.amfoss.in).
```bash
npm run dev
# or
yarn dev
# or
pnpm dev
# or
bun dev
```

Events are automatically deployed via GitHub Actions:

1. **Automatic:** Push to the main branch triggers deployment
2. **Manual:** Run `npm run deploy` for immediate deployment.
3. **Custom Domains:** Configure in repository settings.
Open [http://localhost:3000](http://localhost:3000) with your browser to see the result.

You can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file.

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.

## 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.

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.

Check out our [Next.js deployment documentation](https://nextjs.org/docs/app/building-your-application/deploying) for more details.
114 changes: 114 additions & 0 deletions app/globals.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,114 @@
/* Atkinson Hyperlegible Regular */
@font-face {
font-family: "AtkinsonHyperlegible";
src: url("/assets/fonts/AtkinsonHyperlegible-Regular.ttf") format("truetype");
font-weight: 400;
font-style: normal;
}

/* Atkinson Hyperlegible Italic */
@font-face {
font-family: "AtkinsonHyperlegible";
src: url("/assets/fonts/AtkinsonHyperlegible-Italic.ttf") format("truetype");
font-weight: 400;
font-style: italic;
}

/* Atkinson Hyperlegible Bold */
@font-face {
font-family: "AtkinsonHyperlegible";
src: url("/assets/fonts/AtkinsonHyperlegible-Bold.ttf") format("truetype");
font-weight: 700;
font-style: normal;
}

/* Atkinson Hyperlegible Bold Italic */
@font-face {
font-family: "AtkinsonHyperlegible";
src: url("/assets/fonts/AtkinsonHyperlegible-BoldItalic.ttf") format("truetype");
font-weight: 700;
font-style: italic;
}

/* Atkinson Hyperlegible Mono */
@font-face {
font-family: "AtkinsonHyperlegibleMono";
src: url("/assets/fonts/AtkinsonHyperlegibleMono-VariableFont_wght.ttf") format("truetype");
font-weight: 100 900;
font-style: normal;
}

/* Atkinson Hyperlegible Mono Italic */
@font-face {
font-family: "AtkinsonHyperlegibleMono";
src: url("/assets/fonts/AtkinsonHyperlegibleMono-Italic-VariableFont_wght.ttf") format("truetype");
font-weight: 100 900;
font-style: italic;
}

/* Atkinson Hyperlegible Next */
@font-face {
font-family: "AtkinsonHyperlegibleNext";
src: url("/assets/fonts/AtkinsonHyperlegibleNext-VariableFont_wght.ttf") format("truetype");
font-weight: 100 900;
font-style: normal;
}

/* Atkinson Hyperlegible Next Italic */
@font-face {
font-family: "AtkinsonHyperlegibleNext";
src: url("/assets/fonts/AtkinsonHyperlegibleNext-Italic-VariableFont_wght.ttf") format("truetype");
font-weight: 100 900;
font-style: italic;
}

:root {
--primary-color: #1C1C3F;
--hacktober-dark: #1C1C3F;
--Theme-Primary: #D0CCE3;
--button-hover-color: linear-gradient(90deg, #5A5AB5 0%, #C2C2FF 100%);
--border-color: color(srgb 0.815686 0.8 0.890196 / 0.25) 0px 0px 0px 1px;
}

html {
scroll-behavior: smooth;
}

body {
margin: 0;
padding: 0;
font-family: "AtkinsonHyperlegible", -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',
'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',
sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
background: var(--hacktober-dark);
color: white;
scroll-behavior: smooth;
overflow-x: hidden;
}

code {
font-family: "AtkinsonHyperlegibleMono", source-code-pro, Menlo, Monaco, Consolas, 'Courier New',
monospace;
}

.App {
display: flex;
flex-direction: column;
align-items: center;
overflow-x: hidden;
box-sizing: border-box;
}

/* .scroll-container {
height: 100vh;
overflow-y: scroll;
scroll-snap-type: y mandatory;
}
.section {
height: 100vh;
scroll-snap-align: start;
} */
21 changes: 21 additions & 0 deletions app/layout.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
import type { Metadata } from "next";
import "./globals.css";

export const metadata: Metadata = {
title: "Hacktoberfest Event Portal",
description: "Join us for Hacktoberfest!",
};

export default function RootLayout({
children,
}: Readonly<{
children: React.ReactNode;
}>) {
return (
<html lang="en">
<body>
{children}
</body>
</html>
);
}
Loading