Giter VIP home page Giter VIP logo

albugowy15 / informatics-frs-helper Goto Github PK

View Code? Open in Web Editor NEW
4.0 1.0 0.0 2.03 MB

Fullstack Typesafe Next.js application for ITS Informatics students to organize their FRS

Home Page: https://tc-frs-helper.live

License: GNU General Public License v3.0

JavaScript 1.98% TypeScript 97.41% CSS 0.61%
nextjs prisma trpc typescript vercel next-auth planetscale serverless t3-stack tawilwind

informatics-frs-helper's People

Contributors

albugowy15 avatar depfu[bot] avatar renovate[bot] avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar

informatics-frs-helper's Issues

Update next 15-rc

Describe the solution you'd like
Update next.js version to 15-rc to support experimental React compiler.

Class with team-teaching lecturers

Describe the solution you'd like
Display lecturers that teach same class (team-teaching).

Describe alternatives you've considered

  • Change DB schema to support many-to-many relation between lecturers and classes
  • Push updated DB schema to dev branch from PlanetScale
  • Modify class card component to show all team-teaching lecturers
  • Do some test
  • Merge branch dev to main for PlanetScale
  • Create release

Need Atentions!
DB schema change can cause previous data losses.

filter trade matkul based on subject

Describe the bug
Error filter trade matkul based on subject

To Reproduce
Steps to reproduce the behavior:

  1. Go to trade matkul
  2. Select semester
  3. Select subject
  4. See error

Get user id from trpc request context

Sending user id as an input when make a query or mutation can be dangerous. Especially when get userId using next/router in dynamic page.

The solution is just get all session properties (userId included) from trpc request context.

tRPC query issue in React Server Component

When building the project, tRPC throws an error:

TRPCClientError: Dynamic server usage: Page couldn't be rendered statically because it used `headers`. See more info here: https://nextjs.org/docs/messages/dynamic-server-error

However, the build process still works.

Server side frs validation

Describe the solution you'd like
Apply validation each time student take a class. Validation should happens at server.

Create frs v2

Redesign UI for Create and Edit FRS. Split view into left and right side. Left side contains Informasi Plan FRS, Kelas yang diambil, and Total SKS. Right side contains Form Ambil Matkul.

This redesign hopefully can make user easier to navigate between Kelas yang Diambil section and Form Ambil Matkul.

Basic Component

Create atomic reusable component

  • Typography
  • Button
  • Icon Button
  • Form Input
  • Modal
  • Loading Indicator

Update trpc/@next

Upgrade trpc to v11. It might cause some breaking changes with current trpc configuration, but the official docs has some project example on how to setup trpc v11 with NextAuth and prisma.

Can't take more than one class that has no schedule

Describe the bug
Choosing more than one non-schedue class like Tugas Akhir, Magang, Pra TA fails because schedule conflict constraint.

To Reproduce
Steps to reproduce the behavior:

  1. Create new FRS Plan
  2. Choose Tugas Akhir
  3. Choose Magang
  4. See error

Expected behavior
Ignore schedule validation for non-schedule classes.

Next App Dir Adapter for tRPC

The current project manages mutations from a form component, leveraging the react-hook-form library alongside the useMutation hook from trpc. Following a mutation, the cache is revalidated by triggering a full page reload using the browser API with window.location.replace('/some/route'). However, this approach proves suboptimal, as it results in a complete page rerender after each mutation.

To address this drawback, the proposed solution involves utilizing serverAction to execute the mutation and revalidate the cache. Unfortunately, this integration isn't fully supported with trpc and react-hook-form. An example project has been created to tackle this challenge. trpc offers experimental features such as experimental_createTRPCNextAppDirServer, experimental_createTRPCNextAppDirClient, experimental_createActionHook, and experimental_serverActionLink to facilitate data fetching and mutations within the app directory. However, it's important to note that these features are still labeled as experimental and are expected to become stable in the future.

Depfu Error: No dependency files found

Hello,

We've tried to activate or update your repository on Depfu and couldn't find any supported dependency files. If we were to guess, we would say that this is not actually a project Depfu supports and has probably been activated by error.

Monorepos

Please note that Depfu currently only searches for your dependency files in the root folder. We do support monorepos and non-root files, but don't auto-detect them. If that's the case with this repo, please send us a quick email with the folder you want Depfu to work on and we'll set it up right away!

How to deactivate the project

  • Go to the Settings page of either your own account or the organization you've used
  • Go to "Installed Integrations"
  • Click the "Configure" button on the Depfu integration
  • Remove this repo (albugowy15/informatics-frs-helper) from the list of accessible repos.

Please note that using the "All Repositories" setting doesn't make a lot of sense with Depfu.

If you think that this is a mistake

Please let us know by sending an email to [email protected].


This is an automated issue by Depfu. You're getting it because someone configured Depfu to automatically update dependencies on this project.

SSR for react-hook-form default value

Move CSR on page that need all default data to be displayed so user can update their existing data. Since using tRPC to do SSR data fetching can lead into some bugs the answer is to write server side code (pull the data from database) directly inside Next.js getServerSideProps and pass the returned data as page props.

Documentation on limitation

Add some information about web limitations such as handling team-teaching class, myFRS limit, and forget password

Dependency Dashboard

This issue lists Renovate updates and detected dependencies. Read the Dependency Dashboard docs to learn more.

Rate-Limited

These updates are currently rate-limited. Click on a checkbox below to force their creation now.

  • chore(deps): update dependency @playwright/test to v1.40.1
  • chore(deps): update dependency @types/eslint to v8.44.8
  • chore(deps): update react monorepo (@types/react, @types/react-dom)
  • fix(deps): update dependency undici to v5.28.1
  • chore(deps): update typescript-eslint monorepo to v6.13.1 (@typescript-eslint/eslint-plugin, @typescript-eslint/parser)
  • chore(deps): update actions/checkout action to v4
  • chore(deps): update actions/setup-node action to v4
  • fix(deps): update dependency @tanstack/react-query to v5
  • ๐Ÿ” Create all rate-limited PRs at once ๐Ÿ”

Open

These updates have all been created already. Click a checkbox below to force a retry/rebase of any.

Ignored or Blocked

These are blocked by an existing closed PR and will not be recreated unless you click a checkbox below.

Detected dependencies

github-actions
.github/workflows/playwright.yml
  • actions/checkout v3
  • actions/setup-node v3
  • actions/upload-artifact v3
.github/workflows/release-please.yml
  • google-github-actions/release-please-action v3
.github/workflows/test.yml
  • actions/checkout v3
  • actions/setup-node v3
  • actions/checkout v3
  • actions/setup-node v3
  • actions/checkout v3
  • actions/setup-node v3
npm
package.json
  • @hookform/resolvers ^3.3.2
  • @planetscale/database ^1.11.0
  • @prisma/adapter-planetscale ^5.6.0
  • @prisma/client ^5.6.0
  • @radix-ui/react-accordion ^1.1.2
  • @radix-ui/react-alert-dialog ^1.0.5
  • @radix-ui/react-dialog ^1.0.5
  • @radix-ui/react-dropdown-menu ^2.0.6
  • @radix-ui/react-label ^2.0.2
  • @radix-ui/react-popover ^1.0.7
  • @radix-ui/react-select ^2.0.0
  • @radix-ui/react-separator ^1.0.3
  • @radix-ui/react-slot ^1.0.2
  • @radix-ui/react-toast ^1.1.5
  • @radix-ui/react-tooltip ^1.0.7
  • @tanstack/react-query ^4.36.1
  • @trpc/client ^10.44.1
  • @trpc/next ^10.44.1
  • @trpc/react-query ^10.44.1
  • @trpc/server ^10.44.1
  • @vercel/edge-config ^0.4.1
  • @vercel/kv ^1.0.0
  • bcryptjs ^2.4.3
  • class-variance-authority ^0.7.0
  • jsonwebtoken ^9.0.2
  • lucide-react ^0.292.0
  • next ^14.0.3
  • next-auth ^4.24.5
  • next-themes ^0.2.1
  • react 18.2.0
  • react-dom 18.2.0
  • react-hook-form ^7.48.2
  • resend ^2.0.0
  • superjson ^2.2.1
  • tailwind-merge ^2.0.0
  • tailwindcss-animate ^1.0.7
  • undici ^5.28.0
  • zod ^3.22.4
  • @next/bundle-analyzer ^14.0.3
  • @playwright/test ^1.40.0
  • @tailwindcss/forms ^0.5.7
  • @types/bcryptjs ^2.4.6
  • @types/eslint ^8.44.7
  • @types/jsonwebtoken ^9.0.5
  • @types/node 20.9.0
  • @types/react 18.2.37
  • @types/react-dom 18.2.15
  • @typescript-eslint/eslint-plugin ^6.12.0
  • @typescript-eslint/parser ^6.12.0
  • autoprefixer ^10.4.16
  • clsx ^2.0.0
  • eslint 8.54.0
  • eslint-config-next 14.0.3
  • eslint-plugin-unused-imports ^3.0.0
  • postcss ^8.4.31
  • prettier ^3.1.0
  • prettier-plugin-tailwindcss ^0.5.7
  • prisma ^5.6.0
  • tailwindcss ^3.3.5
  • typescript 5.2.2

  • Check this box to trigger a request for Renovate to run again on this repository

Reset password

Describe the solution you'd like
Use SendGrid to send email for reset password

Rate limiter for forgot password

Describe the solution you'd like
Rate limiter for forgot password

Describe alternatives you've considered
Use redis or upstash

Session loading status on Navbar component

Check session loading status due to useSession() happen in client side. This fix is addressed to Login Button in Navbar component. Display loading indicator while next auth is checking user session.

DB Indexing

Add indexing

Matkul Table

  • name
  • semester

User Table

  • username
  • email

Lecturer

  • code

Moving away from Planetscale

Planetscale has announced that they will be discontinuing the Hobby (Free) plan starting April 8th. To continue using the database, users will need to switch to a Paid plan.

Now, I am looking for an alternative MySQL compatible database service that offers a free plan.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.