Skip to content

Commit a824744

Browse files
committed
🚀 First Content Published
1 parent e44cfd5 commit a824744

File tree

12 files changed

+208
-50
lines changed

12 files changed

+208
-50
lines changed

astro.config.mjs

Lines changed: 30 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,35 @@
1-
import { defineConfig } from 'astro/config';
21
import starlight from '@astrojs/starlight';
2+
import { defineConfig } from 'astro/config';
33

44
// https://astro.build/config
55
export default defineConfig({
6-
integrations: [
7-
starlight({
8-
title: 'My Docs',
9-
social: {
10-
github: 'https://github.com/withastro/starlight',
11-
},
12-
sidebar: [
13-
{
14-
label: 'Guides',
15-
items: [
16-
// Each item here is one entry in the navigation menu.
17-
{ label: 'Example Guide', link: '/guides/example/' },
18-
],
19-
},
20-
{
21-
label: 'Reference',
22-
autogenerate: { directory: 'reference' },
23-
},
24-
],
25-
}),
26-
],
6+
integrations: [
7+
starlight({
8+
title: 'NextJudge',
9+
social: {
10+
github: 'https://github.com/withastro/starlight',
11+
},
12+
sidebar: [
13+
{
14+
label: 'Start Here',
15+
items: [
16+
{ label: 'Introduction', link: '/start/intro/' },
17+
{ label: 'Principles', link: '/start/principles/' },
18+
{ label: 'Key Terms', link: '/start/key-terms/' },
19+
{ label: 'Getting Started', link: '/start/getting-started/' },
20+
],
21+
},
22+
{
23+
label: 'Architecture',
24+
items: [
25+
{ label: 'Core Components', link: '/architecture/components/' },
26+
],
27+
},
28+
{
29+
label: 'Reference',
30+
autogenerate: { directory: 'reference' },
31+
},
32+
],
33+
}),
34+
],
2735
});

src/assets/architecture.png

5.67 MB
Loading

src/assets/light-arch.png

2.99 MB
Loading

src/assets/logo.svg

Lines changed: 1 addition & 0 deletions
Loading

src/content/config.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,5 @@ import { docsSchema, i18nSchema } from '@astrojs/starlight/schema';
33

44
export const collections = {
55
docs: defineCollection({ schema: docsSchema() }),
6-
i18n: defineCollection({ type: 'data', schema: i18nSchema() }),
6+
// i18n: defineCollection({ type: 'data', schema: i18nSchema() }),
77
};
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
---
2+
title: Core Components
3+
description: The components of the NextJudge framework.
4+
---
5+
6+
The NextJudge framework is composed of a number of components. These components allow us to encapsulate functionality and make the framework more modular.
7+
8+
NextJudge follows a distributed architecture composed of a number of components/microservices that communicate with each other via gRPC, websockets, and HTTP.
9+
10+
The following diagram shows the current planned architecture of NextJudge:
11+
12+
![Architecture](/src/assets/architecture.png)
13+
14+
## Components
15+
16+
### Web Client
17+
18+
The Full Stack Web Application is responsible for providing a user interface for the NextJudge framework. It is responsible for handling requests from the outside world and routing them to the appropriate microservice. It is also responsible for handling responses from the microservices and routing them to the outside world.
19+
20+
### Bridge
21+
22+
The Bridge is responsible for connecting the NextJudge framework to developer applications, such as the NextJudge web client. It is responsible for handling requests from the outside world and routing them to the appropriate microservice. It is also responsible for handling responses from the microservices and routing them to the outside world.
23+
24+
### Data Layer
25+
26+
The Data Layer is responsible for storing data. It is responsible for storing contests, problems, submissions, users, and other data. We use a relational database (PostgreSQL) for storing data. The various microservices communicate with the database via HTTP. A REST API is used for communicating with the database.
27+
28+
### Engine
29+
30+
The Engine is responsible for compiling and running submissions. When a submission is received from the Bridge, the Engine will compile the submission and run it against the test cases. The Engine will then return the results to the Judge.
31+
32+
### Judge
33+
34+
The Judge is responsible for judging submissions. When a submission is received from the Bridge, the Judge will send the submission to the Engine. The Judge will then receive the results from the Engine and return the results to the Bridge.

src/content/docs/guides/example.md

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

src/content/docs/index.mdx

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,36 @@
11
---
2-
title: Welcome to Starlight
2+
title: NextJudge
33
description: Get started building your docs site with Starlight.
44
template: splash
55
hero:
6-
tagline: Congrats on setting up a new Starlight project!
6+
tagline: The next generation of competitive programming tooling.
77
image:
88
file: ../../assets/houston.webp
99
actions:
1010
- text: Example Guide
11-
link: /guides/example/
11+
link: /start/intro/
1212
icon: right-arrow
1313
variant: primary
1414
- text: Read the Starlight docs
1515
link: https://starlight.astro.build
1616
icon: external
1717
---
1818

19-
import { Card, CardGrid } from '@astrojs/starlight/components';
19+
import { Card, CardGrid } from "@astrojs/starlight/components";
2020

2121
## Next steps
2222

2323
<CardGrid stagger>
24-
<Card title="Update content" icon="pencil">
25-
Edit `src/content/docs/index.mdx` to see this page change.
26-
</Card>
27-
<Card title="Add new content" icon="add-document">
28-
Add Markdown or MDX files to `src/content/docs` to create new pages.
29-
</Card>
30-
<Card title="Configure your site" icon="setting">
31-
Edit your `sidebar` and other config in `astro.config.mjs`.
32-
</Card>
33-
<Card title="Read the docs" icon="open-book">
34-
Learn more in [the Starlight Docs](https://starlight.astro.build/).
35-
</Card>
24+
<Card title="Update content" icon="pencil">
25+
Edit `src/content/docs/index.mdx` to see this page change.
26+
</Card>
27+
<Card title="Add new content" icon="add-document">
28+
Add Markdown or MDX files to `src/content/docs` to create new pages.
29+
</Card>
30+
<Card title="Configure your site" icon="setting">
31+
Edit your `sidebar` and other config in `astro.config.mjs`.
32+
</Card>
33+
<Card title="Read the docs" icon="open-book">
34+
Learn more in [the Starlight Docs](https://starlight.astro.build/).
35+
</Card>
3636
</CardGrid>
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
---
2+
title: Getting Started
3+
description: A guide in my new Starlight docs site.
4+
---

src/content/docs/start/intro.md

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
---
2+
title: Introduction
3+
description: A guide in my new Starlight docs site.
4+
---
5+
6+
⚡️ Welcome to the documentation for NextJudge! ⚡️
7+
8+
We're an OSU senior capstone software engineering project aiming to create an open-source, extensible, and modular competitive programming code execution and judging framework.
9+
10+
## What is NextJudge?
11+
12+
At its core, NextJudge is a code execution and judging framework. It allows you to host competitive programming contests and judge submissions. We found that there are a number of platforms that allow you to host competitive programming contests, but none of them are open-source, extensible, and modular. We decided to create NextJudge to fill this gap.
13+
14+
## Why was NextJudge created?
15+
16+
We created NextJudge to not only fill the existing gap in the market, but also to provide a way for our student ACM chapter to host our own competitive programming contests. This allows us to have more control over the platform and allows us to customize it to suit our needs.
17+
18+
## Who is NextJudge for?
19+
20+
NextJudge is for anyone who wants to host competitive programming contests. Be it a student ACM chapter, a company, or an individual, NextJudge is for you. The goal isn't necessarily to replace existing platforms, but to provide an alternative that is open-source, extensible, and modular.
21+
22+
### Further Reading
23+
24+
- [Key Terms](/start/key-terms)
25+
- [Getting Started](/start/getting-started)

0 commit comments

Comments
 (0)