Skip to content

Commit bc48f53

Browse files
committed
clean up; prepare for github
1 parent 0c8523d commit bc48f53

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

73 files changed

+11714
-3867
lines changed

.eslintignore

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
node_modules
2+
.next
3+
out
4+
dist
5+
build
6+
coverage
7+
.turbo

.eslintrc.cjs

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
module.exports = {
2+
root: true,
3+
parser: '@typescript-eslint/parser',
4+
parserOptions: {
5+
ecmaVersion: 2021,
6+
sourceType: 'module',
7+
ecmaFeatures: {
8+
jsx: true,
9+
},
10+
},
11+
extends: [
12+
'next/core-web-vitals',
13+
'plugin:@typescript-eslint/recommended',
14+
'plugin:jsx-a11y/recommended',
15+
'plugin:import/recommended',
16+
'plugin:import/typescript',
17+
'plugin:tailwindcss/recommended',
18+
],
19+
plugins: ['@typescript-eslint', 'jsx-a11y', 'import', 'tailwindcss'],
20+
settings: {
21+
'import/resolver': {
22+
typescript: {
23+
alwaysTryTypes: true,
24+
project: './tsconfig.json',
25+
},
26+
node: {
27+
extensions: ['.js', '.jsx', '.ts', '.tsx'],
28+
},
29+
},
30+
},
31+
rules: {
32+
// Import organization
33+
'import/order': [
34+
'error',
35+
{
36+
groups: ['builtin', 'external', 'internal', 'parent', 'sibling', 'index'],
37+
'newlines-between': 'always',
38+
alphabetize: {
39+
order: 'asc',
40+
caseInsensitive: true,
41+
},
42+
},
43+
],
44+
'import/no-duplicates': 'error',
45+
'import/no-unresolved': 'error',
46+
47+
// TypeScript
48+
'@typescript-eslint/consistent-type-imports': [
49+
'error',
50+
{
51+
prefer: 'type-imports',
52+
fixStyle: 'inline-type-imports',
53+
},
54+
],
55+
'@typescript-eslint/no-unused-vars': [
56+
'warn',
57+
{
58+
argsIgnorePattern: '^_',
59+
varsIgnorePattern: '^_',
60+
},
61+
],
62+
'@typescript-eslint/no-explicit-any': 'warn',
63+
64+
// Accessibility
65+
'jsx-a11y/anchor-is-valid': [
66+
'error',
67+
{
68+
components: ['Link'],
69+
specialLink: ['hrefLeft', 'hrefRight'],
70+
aspects: ['invalidHref', 'preferButton'],
71+
},
72+
],
73+
74+
// Tailwind
75+
'tailwindcss/no-custom-classname': 'off', // Allow custom classes from shadcn
76+
'tailwindcss/classnames-order': 'warn',
77+
},
78+
};

.eslintrc.json

Lines changed: 0 additions & 3 deletions
This file was deleted.

.github/workflows/deploy.yml

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
name: Deploy to GitHub Pages
2+
3+
on:
4+
push:
5+
branches:
6+
- main
7+
workflow_dispatch:
8+
9+
permissions:
10+
contents: read
11+
pages: write
12+
id-token: write
13+
14+
concurrency:
15+
group: "pages"
16+
cancel-in-progress: false
17+
18+
jobs:
19+
build:
20+
runs-on: ubuntu-latest
21+
steps:
22+
- name: Checkout
23+
uses: actions/checkout@v4
24+
25+
- name: Setup Node
26+
uses: actions/setup-node@v4
27+
with:
28+
node-version: '20'
29+
cache: 'npm'
30+
31+
- name: Install dependencies
32+
run: npm ci
33+
34+
- name: Build with Next.js
35+
run: npm run build
36+
env:
37+
NODE_ENV: production
38+
39+
- name: Upload artifact
40+
uses: actions/upload-pages-artifact@v3
41+
with:
42+
path: ./out
43+
44+
deploy:
45+
environment:
46+
name: github-pages
47+
url: ${{ steps.deployment.outputs.page_url }}
48+
runs-on: ubuntu-latest
49+
needs: build
50+
steps:
51+
- name: Deploy to GitHub Pages
52+
id: deployment
53+
uses: actions/deploy-pages@v4

.nvmrc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
20

.prettierignore

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
.next
2+
out
3+
node_modules
4+
package-lock.json
5+
public
6+
*.md

.prettierrc

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
{
2+
"semi": false,
3+
"singleQuote": true,
4+
"printWidth": 100,
5+
"tabWidth": 2,
6+
"trailingComma": "es5",
7+
"arrowParens": "always",
8+
"plugins": ["prettier-plugin-tailwindcss"]
9+
}

README.md

Lines changed: 64 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,81 @@
1-
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).
1+
# Mathis Group Website
2+
23

34
## Getting Started
45

5-
First, run the development server:
6+
### Prerequisites
7+
8+
- Node.js 18+
9+
- npm or pnpm
10+
11+
### Installation
612

713
```bash
14+
# Install dependencies
15+
npm install
16+
17+
# Run development server
818
npm run dev
9-
# or
10-
yarn dev
11-
# or
12-
pnpm dev
13-
# or
14-
bun dev
19+
20+
# Build for production
21+
npm run build
22+
23+
# Preview production build
24+
npx serve out
1525
```
1626

17-
Open [http://localhost:3000](http://localhost:3000) with your browser to see the result.
27+
The site will be available at [http://localhost:3000](http://localhost:3000).
1828

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

21-
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.
30+
## Content Management
2231

23-
## Learn More
32+
### Adding Team Members
2433

25-
To learn more about Next.js, take a look at the following resources:
34+
Edit `data/people.json`:
35+
36+
```json
37+
{
38+
"id": "unique-id",
39+
"name": "Name",
40+
"role": "PhD Student",
41+
"project": "Research focus",
42+
"tags": ["tag1", "tag2"],
43+
"links": {
44+
"scholar": "url",
45+
"github": "url"
46+
}
47+
}
48+
```
49+
50+
### Adding Publications
51+
52+
Edit `data/publications.json`:
53+
54+
```json
55+
{
56+
"id": "unique-id",
57+
"title": "Paper Title",
58+
"authors": ["Author 1", "Author 2"],
59+
"year": 2024,
60+
"venue": "Conference/Journal",
61+
"type": "conference|journal|preprint",
62+
"tags": ["tag1", "tag2"],
63+
"featured": true,
64+
"links": {
65+
"arxiv": "url",
66+
"github": "url"
67+
}
68+
}
69+
```
2670

27-
- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API.
28-
- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial.
71+
### Adding Research Areas
2972

30-
You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js) - your feedback and contributions are welcome!
73+
Edit `data/research.json` to add or modify research directions.
3174

32-
## Deploy on Vercel
75+
## Contributing
3376

34-
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.
77+
This is a research lab website. For updates or corrections:
3578

36-
Check out our [Next.js deployment documentation](https://nextjs.org/docs/app/building-your-application/deploying) for more details.
79+
1. Create a feature branch
80+
2. Make your changes
81+
3. Submit a pull request

app/awards/page.tsx

Lines changed: 112 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,112 @@
1+
import { Trophy } from "lucide-react"
2+
3+
import { Badge } from "@/components/ui/badge"
4+
import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card"
5+
6+
export const metadata = {
7+
title: "Awards | Mathis Group",
8+
description: "Recognition and awards received by the Mathis Group.",
9+
}
10+
11+
export default function AwardsPage() {
12+
const awards = [
13+
{
14+
date: "October 2024",
15+
title: "Robert Bing Prize",
16+
organization: "Swiss Academy of Medical Sciences (SAMS)",
17+
recipients: "Mackenzie and Alexander Mathis",
18+
description: "Honored for groundbreaking contributions to the intersection of neuroscience and machine learning",
19+
type: "Prize"
20+
},
21+
{
22+
date: "September 2024",
23+
title: "HackaHealth Award",
24+
organization: "HackaHealth",
25+
recipients: "Merkourios Simos",
26+
description: "Received for his Master's thesis in the lab on imitation learning",
27+
type: "Award"
28+
},
29+
{
30+
date: "July 2023",
31+
title: "Eric Kandel Young Neuroscientists Prize 2023",
32+
organization: "Eric Kandel Foundation",
33+
recipients: "Mackenzie W. Mathis and Alexander Mathis",
34+
description: "For uncovering the theoretical and neural basis of mechanisms underlying adaptive behaviour in intelligent systems. They developed the first animal pose estimation computer vision tool that requires little user input data.",
35+
type: "Prize"
36+
},
37+
{
38+
date: "December 2023",
39+
title: "MyoChallenge Track Winner at NeurIPS 2023",
40+
organization: "NeurIPS",
41+
recipients: "Team Lattice (Alessandro Marin Vargas, Alberto Chiappa, Alexander Mathis)",
42+
description: "Through the application of curriculum learning, reward shaping, and Lattice-driven exploration, they successfully trained a policy to control a biologically-realistic arm equipped with 63 muscles and 27 degrees of freedom.",
43+
type: "Competition"
44+
},
45+
{
46+
date: "December 2022",
47+
title: "Inaugural MyoChallenge Winner at NeurIPS 2022",
48+
organization: "NeurIPS",
49+
recipients: "Alberto Chiappa, Nisheet Patel, Pablo Tano, Alexandre Pouget, Alexander Mathis",
50+
description: "Winning solution for the inaugural NeurIPS MyoChallenge. See the Neuron paper discussing the solution and implications for biological motor control.",
51+
type: "Competition"
52+
}
53+
]
54+
55+
return (
56+
<div className="flex flex-col">
57+
{/* Header */}
58+
<section className="bg-muted/30 py-24">
59+
<div className="section-container">
60+
<div className="mx-auto max-w-2xl text-center">
61+
<Trophy className="mx-auto mb-6 size-12 text-primary" />
62+
<h1 className="text-4xl font-bold tracking-tight sm:text-5xl">
63+
Awards & Recognition
64+
</h1>
65+
<p className="mt-6 text-lg leading-8 text-muted-foreground">
66+
Recognition for our contributions to neuroscience and machine learning
67+
</p>
68+
</div>
69+
</div>
70+
</section>
71+
72+
{/* Awards List */}
73+
<section className="py-16 lg:py-24">
74+
<div className="section-container max-w-4xl">
75+
<div className="space-y-8">
76+
{awards.map((award, index) => (
77+
<Card key={index} className="transition-all hover:shadow-soft-lg">
78+
<CardHeader>
79+
<div className="flex items-start justify-between gap-4">
80+
<div className="flex-1">
81+
<div className="mb-2 flex items-center gap-3">
82+
<Badge variant="outline">{award.date}</Badge>
83+
<Badge variant="secondary">{award.type}</Badge>
84+
</div>
85+
<CardTitle className="text-2xl">{award.title}</CardTitle>
86+
<CardDescription className="mt-1 text-base">
87+
{award.organization}
88+
</CardDescription>
89+
</div>
90+
</div>
91+
</CardHeader>
92+
<CardContent>
93+
<div className="space-y-3">
94+
<div>
95+
<p className="mb-1 text-sm font-medium text-muted-foreground">Recipients:</p>
96+
<p className="text-sm">{award.recipients}</p>
97+
</div>
98+
<div>
99+
<p className="text-sm leading-relaxed text-muted-foreground">
100+
{award.description}
101+
</p>
102+
</div>
103+
</div>
104+
</CardContent>
105+
</Card>
106+
))}
107+
</div>
108+
</div>
109+
</section>
110+
</div>
111+
)
112+
}

0 commit comments

Comments
 (0)