Giter Club home page Giter Club logo

eventuner's Introduction

twitter_header_photo_2

Eventuner

https://eventuner.vercel.app

Eventuner streamlines the event planning process, making it easier for both organizers and participants to manage their schedules and confirm attendance. No more back-and-forth emails or messages to find the best date!

Built with

TypeScript Next JS TailwindCSS Zustand React Server Components React Server Actions Zod Supabase Prisma Postgres Vercel

Frontend

  • TypeScript
  • Next.js (ver.14)
    • App router
    • Server components
    • Server actions
  • Tailwind CSS
  • shadcn/ui
  • Zod

Backend

  • TypeScript
  • Next.js (ver.14)
    • API handler
  • Supabase
    • PostgreSQL
  • Prisma

Hosting

  • Vercel

Features

Create an Event

As an organizer, you can easily create an event by specifying its details and proposing potential dates for it.

event-create

Share Your Event

Once your event is set up, you'll receive a unique URL for your event page.

スクリーンショット 2024-02-04 午後7 25 27

Invite Participants:

Share this URL with your intended participants. They can access the event page through this link.

RSVP with Ease

Participants visiting the event page can view all the event details, including the proposed dates. They can then fill out a simple form to indicate their availability and confirm their attendance.

attendance

eventuner's People

Contributors

koyablue avatar

Watchers

 avatar

eventuner's Issues

Feature: Add tests

Type of feature

🚀 Feature

Description

Add tests

Tasks

  • E2E
  • Component test(React Testing Library)
  • Jest unit test

Feature: User authentication

Type of feature

🚀 Feature

Description

Implement user authentication feature.
Logged in user can update/delete their events.
Use Supabase Authenticatin

Tasks

  • Implement Registration
    • Registration form (email, password, password confirmation)
    • Registration API
  • Implement Login
    • Login form (email, password)
    • Login API

Feature: README.md

Type of feature

🚀 Feature

Description

Add README.

Tasks

  • Edit README.md

Feature: Set up Prisma, create tables

Type of feature

🚀 Feature

Description

Make it possible to use Prisma and create tables.

Tasks

  • Install and set up Prisma
  • Declare schemas and migration

Feature: Event detail page

Type of feature

🚀 Feature

Description

Implement event detail page.
This page has:

  • event name
  • Attendance form

Tasks

  • Implement event detail page UI
  • Implement attendance form
  • Implement GET: api/event/uuid/[uuid] API call
    • the endpoint should be api/event/u/[uuid]
  • Fix create attendance API
    • Change endpoint. /api/events/u/[uuid]/attendances -> /api/events/[id]/attendances

Feature: Disable attendance form after the last event date.

Type of feature

🚀 Feature

Description

Disable attendance form after the last event date.
ex) If current date is 3rd Feb 2024 11:00 pm and the last candidate date is 2nd Feb 2024 9:30 pm - 10:00pm, user can't register their attendances.

Tasks

  • Validation logic to detect if the current time is before or after the last EventDate
  • Disabled UI (with message)

Feature: Attendance API

Type of feature

🚀 Feature

Description

Implement API endpoints for Attendance.

  • Create attendance of the event
  • Get attendances of the event

Tasks

  • Create attendance API (by event id or event uuid)
  • Get attendances API (by event id or event uuid)

Feature: Edit env values

Type of feature

🚀 Feature

Description

DATABASE_URL

Now DATABASE_URL env value is
local: db for development
preview and pro: db for production

So add DATABASE_URL_PRO, DATABASE_URL_DEV(for local and preview)

API_BASE_URL

https://github.com/orgs/vercel/discussions/2020
Currently NEXT_PUBLIC_API_BASE_URL is the base url of api route. And an error is occrring.
The comment in issue says
Update: removing that NEXT_PUBLIC prefix fixed my issue. Thank you so much @leerob!
So maybe same solution would work.

Error log:

TypeError: fetch failed
    at Object.fetch (node:internal/deps/undici/undici:11730:11)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5) {
  cause: Error: connect ECONNREFUSED 127.0.0.1:3000
      at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1555:16)
      at TCPConnectWrap.callbackTrampoline (node:internal/async_hooks:128:17) {
    errno: -111,
    code: 'ECONNREFUSED',
    syscall: 'connect',
    address: '127.0.0.1',
    port: 3000
  }
}

Tasks

  • Edit .env
  • Fix env util. Get value depends on APP_ENV
  • Add env to Vercel

Feature: Implement APIs

Type of feature

🚀 Feature

Description

Implement the minimum APIs currently required.

API:

  • POST: /api/events
    • Create a new event
  • GET: /api/events/[uuid]
    • Get the event by uuid
  • PATCH: /api/events/[id]
    • Update event by id
  • DELETE: /api/events/[id]
    • Delete event by id
  • POST: /api/events/[uuid]/attendances
    • Create attendance data

Tasks

  • Implement POST: /api/events
  • Implement GET: /api/events/[uuid]
  • Implement POST: /api/events/[uuid]/attendances
  • Implement PATCH: /api/events/[id]
  • Implement DELETE: /api/events/[id]

Feature: Landing Page

Type of feature

🚀 Feature

Description

It would be nice to have a landing page.

Tasks

  • Implement LP

Feature: Deploy configurations

Type of feature

🚀 Feature

Description

Do deploy configurations for production environment.

https://zenn.dev/monicle/articles/a3c153c8127eb9
https://www.prisma.io/docs/orm/prisma-client/deployment/serverless/deploy-to-vercel
https://github.com/prisma/deployment-example-vercel/blob/main/package.json

Tasks

  • Create new DB for production in Supabase
  • Add deploy command
  • Configure Vercel
  • Add env variables to Vercel
    • Add NEXT_PUBLIC_API_BASE_URL and NEXT_PUBLIC_APP_BASE_URL after deploy to Vercel (because app url will be named by Vercel automatically and the name is unpredictable since we don't use our own custom domain)

Feature: Loading view in the event form

Type of feature

🚀 Feature

Description

Implement loading view in the event form.
Branch: feature/issue-6/event-form-loading

Tasks

  • Loading
  • Disable submit button while submitting

Bug: Event detail page data is not revalidated after form submission

Describe the bug

Event detail page data is not revalidated after form submission

Steps to reproduce

  1. Create an event
  2. Go to detail page
  3. Register attendance
  4. Go back to detail page
  5. Open accordion and the attendance status is not updated. (It will be updated after refreshed the page)

Feature: Add required label to required fields

Type of feature

🚀 Feature

Description

In the current UI, it's a little difficult for he user to understand which field is required. For better UX, we should add label or asterisk mark to the required fields.

Tasks

  • Add required labels

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.