Simple fullstack app for crud actions over google calendar
Node, React, Typescript, PostgreSql
BACKEND
- Node Express server
- Googleapis module
-
Controllers
- googleOAuth controller - google oauth2 login endpoints
- calendar controller - event fetching, creation, update & deletion endpoints
-
Services
- authorization service - verifies jwt recieved from google
- calendar service - google calendar interactions
- database service - adding action logs to database
- Middleware
- auth middleware - authorizes user using token from request header
FRONTEND
- React app
- Components
- Events - event listing, creation, editing
- Login - login using google account
- NavBar - app navigation
- Contexts
- Auth context - stores if user is loggedIn & authorization token
- Custom hooks
- useCalendar hook - stores functions used in events components
- React router
- UI
![events](https://github.com/EdiSincek/googleCalendarCrud/assets/87430076/caa93660-84a3-4b4c-aa64-13ac635ae22c)
![newEvent](https://github.com/EdiSincek/googleCalendarCrud/assets/87430076/ebcf8275-df0b-4ea9-aa97-012788b8296a)
![editEvent](https://github.com/EdiSincek/googleCalendarCrud/assets/87430076/39b3e1b9-fe49-4ba9-8874-45d4280c2378)
DATABASE
- PostgreSql db
- action_logs table - stores actions performed on events
POTENTIAL IMPROVEMENTS
- Handling multiple concurrent users
- Storing user data and access and refresh tokens to database Setting access token of correct user on each request to google to eliminate data fetching from other accounts
- Handling token expiration
- Checking if token is expired
- Refreshing access token using refresh token
- Frontend improvements
- Showing logs to the user.
- Caching events
- UI/UX improvements
- Better error handling