guess who forgot to add files
diff --git a/todo/roles/about.js b/todo/roles/about.js
new file mode 100644
index 0000000..3c86b9a
--- /dev/null
+++ b/todo/roles/about.js
@@ -0,0 +1 @@
+export default function About(props) {}
\ No newline at end of file
diff --git a/todo/roles/failure.js b/todo/roles/failure.js
new file mode 100644
index 0000000..e188b06
--- /dev/null
+++ b/todo/roles/failure.js
@@ -0,0 +1 @@
+export default function Failure(props) {}
\ No newline at end of file
diff --git a/todo/roles/index.js b/todo/roles/index.js
new file mode 100644
index 0000000..f125eee
--- /dev/null
+++ b/todo/roles/index.js
@@ -0,0 +1,93 @@
+import { Component } from 'react';
+import Styles from '../../../styles/nucleus/nucleus.module.css'
+import HCaptcha from 'react-hcaptcha';
+import Axios from 'axios';
+import Router from 'next/router';
+import React from 'react';
+import Header from '../../../Components/Header'
+import Link from 'next/link'
+
+import { AutoLayout, Panel, Title, Subtitle, Text, Divider } from '../../../Components/Panels';
+import { List, ListItem, Code } from '../../../Components/Texttools';
+
+class Verify extends Component {
+    constructor(props) {
+        super(props);
+        this.v = false;
+        this.state = {
+            captchaComplete: false,
+            clicked: false
+        }
+    }
+
+    async handleVerificationSuccess(cls, token) {
+        const chk = await Axios.put('/api/nucleus/verifyTkn', { tkn: token.toString() })
+        if(chk.data.success == true) {
+            this.setState({
+                captchaComplete: true
+            })
+            return cls.v = true;
+        } else {
+            return;
+        }
+    }
+
+    async submitForm(cls) {
+        if ( cls.state.clicked ) {
+            return
+        }
+        cls.setState({
+            clicked: true
+        })
+        if (!cls.v) {
+            return Router.push('/nucleus/verify/failure','/nucleus/verify/failure')
+        }
+        let code = await Axios.post('/api/nucleus/complete', {
+            uid:cls.props.uID,
+            rid:cls.props.rID,
+            gid:cls.props.gID,
+            code:cls.props.code
+        });
+        if (code.status === 200 ) return Router.push('/nucleus/verify/success','/nucleus/verify/success')
+        else return Router.push('/nucleus/verify/failure','/nucleus/verify/failure')
+    }
+
+    render() {
+        return <>
+            <Header
+                name={this.props.guild_name}
+                customImage={this.props.guild_icon_url}
+                roundImage={true}
+                subtext={`${this.props.memberCount} members`}
+                gradient={["F27878", "D96B6B"]}
+                wave="web/waves/header/nucleus"
+                buttons={[]}
+            />
+            <AutoLayout>
+                <Panel>
+                    <Text>Complete the check below to join {this.props.guild_name}</Text>
+                    <div style={{height: "125px"}}>
+                        <HCaptcha
+                            id="Captchas mitigate problems"
+                            sitekey="85074411-fa13-4d9b-b901-53095c6d1fc6"
+                            onVerify={token => this.handleVerificationSuccess(this, token)}
+                            theme={this.theme ? "light" : "dark"}
+                        />
+                    </div>
+                    <button type="button" className={Styles.button + " " + (this.state.captchaComplete ? Styles.buttonComplete : null)} onClick={(success) => this.submitForm(this)}>Proceed</button>
+                    <List colour="F27878">
+                        <ListItem>This is an automatic check performed by Nucleus.</ListItem>
+                        <ListItem>By clicking Proceed, you will be given the <code>{this.props.role_name}</code> role in <code>{this.props.guild_name}</code>.</ListItem>
+                        <ListItem>For the full list of data stored by Nucleus, please check <Link href="https://clicksminuteper.github.io/policies/nucleus#verification">here</Link></ListItem>
+                    </List>
+                    <Text>You can add Nucleus to your server by inviting it <Link href="https://discord.com/api/oauth2/authorize?client_id=715989276382462053&permissions=121295465718&scope=bot%20applications.commands">here</Link>.</Text>
+                    <div id="confetti" />
+                </Panel>
+            </AutoLayout>
+        </>
+    }
+}
+
+export default Verify;
+export async function getServerSideProps(ctx) {
+}
\ No newline at end of file
diff --git a/todo/roles/success.js b/todo/roles/success.js
new file mode 100644
index 0000000..f7155ed
--- /dev/null
+++ b/todo/roles/success.js
@@ -0,0 +1 @@
+export default function Success(props) {}
\ No newline at end of file