COMPSCI 399 Project 10 (Extended note-taking app for programming students)
syntax is a multi-platform note-taking application designed specifically for programming students. In order to meet the needs of its target audience, the application supports writing, compiling, and executing code. It also contains many additional note-taking features, including searchable code snippets, drawing & stylus support, exportable notes, image upload, Youtube video embeds, and collaborative note creation.
Further information, documentation, and considerations can be found at https://github.com/uoa-compsci399-s2-2022/syntax/wiki
Deployed at http://syntaxapp.vercel.app/
- Typescript
- Javascript
- React (17.0.2)
- Prisma (4.2.1)
- prisma-client (4.3.1)
- Next.js (12.3.1)
- NextAuth.js (4.10.3)
- next-auth/prisma-adapter (1.0.4)
- next-pwa (5.5.4)
- next-themes (0.2.0)
- NextUI (1.0.0-beta.9)
- heroicons (2.0.11)
- Tiptap (2.0.0-beta.199)
- Prosemirror
- prosemirror-state (1.4.1)
- prosemirror-view (1.28.2)
- CodeMirror
- codemirror/view (6.2.4)
- codemirror/commands (6.1.0)
- codemirror/language (6.2.1)
- TIO.run (AviFS/tio-api)
- Turndown (7.1.1)
- Y.js (13.5.41)
- lodash (4.17.21)
- AWS SDK (2.1204.0)
- tldraw (1.24.5)
- md-to-pdf (5.1.0)
- lru-cache (7.14.0)
- Amazon S3 (AWS)
To get started, clone this repo and install all dependencies:
$ git clone https://github.com/uoa-compsci399-s2-2022/syntax.git
$ npm install
To use Prisma with the application, generate the schema bindings via:
$ npx prisma generate
And the init the database with the required collections:
$ npx prisma db push
These are required steps, not doing so will cause the compile to fail.
Any changes made to the schema will require you to re-generate the Prisma client - this also means that any previously created objects that now break the schema may fail.
The following environment variables must be set:
S3_SECRET_KEY
S3_ACCESS_KEY
AWS_BUCKET_REGION
AWS_BUCKET_NAME
NEXTAUTH_SECRET
NEXTAUTH_URL
GOOGLE_SECRET
GOOGLE_ID
DATABASE_URL
If hosting through Vercel, you can link a project to handle storing the environment variables for dev, preview and prod:
$ npm install -g vercel
$ vercel link
. . .
$ vercel env pull
When deploying to Vercel, you may not wish to build every branch in your repo. To prevent this, you can skip "build-steps".
An example to only track and build "Production":
[ "$VERCEL_ENV" != production ]
Our client Paravmir and sponsor Vercel.
Name | Role |
---|---|
Lucy Jane Dionisio | Team Leader, Frontend Developer, Designer |
Lily Howan | Frontend Developer, Designer |
Sarah Kim | Backend Developer |
Hayden White | Backend Developer, Designer |
Kevin Yip | Backend Developer |