Skip to content

Commit de002b4

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

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

+11716
-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: 66 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,83 @@
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+
3+
A polished, production-ready research lab website with a clean, calm visual language inspired by modern research websites. Built with Next.js 14, Tailwind CSS, and shadcn/ui.
4+
25

36
## Getting Started
47

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

715
```bash
16+
# Install dependencies
17+
npm install
18+
19+
# Run development server
820
npm run dev
9-
# or
10-
yarn dev
11-
# or
12-
pnpm dev
13-
# or
14-
bun dev
21+
22+
# Build for production
23+
npm run build
24+
25+
# Preview production build
26+
npx serve out
1527
```
1628

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

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

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.
32+
## Content Management
2233

23-
## Learn More
34+
### Adding Team Members
2435

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

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.
73+
### Adding Research Areas
2974

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

32-
## Deploy on Vercel
77+
## Contributing
3378

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

36-
Check out our [Next.js deployment documentation](https://nextjs.org/docs/app/building-your-application/deploying) for more details.
81+
1. Create a feature branch
82+
2. Make your changes
83+
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)