Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
15 changes: 14 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,2 +1,15 @@
# Dependencies
node_modules/

# Environment variables
.env
credentials.json

# Build outputs
client/build/
server/dist/

# OAuth credentials
credentials.json

# Cache
.vite/
8 changes: 8 additions & 0 deletions .vite/deps/_metadata.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"hash": "17200a85",
"configHash": "c7d97791",
"lockfileHash": "50e41985",
"browserHash": "47058abf",
"optimized": {},
"chunks": {}
}
File renamed without changes.
60 changes: 59 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1 +1,59 @@
# shared-calendar
# Shared Calendar

This is a calendar sharing application with Google Calendar integration for viewing team availability and scheduling meetings.

## Stack

- **Frontend**: React + TypeScript + Vite + Tailwind + shadcn/ui
- **Backend**: Node.js + Express (minimal - health check only)
- **Auth**: Client-side OAuth via Google Identity Services

## Quick Start

```bash
# Install root dependencies (concurrently, etc.)
npm install

# Install client & server dependencies
npm run install:all

# Set up Google OAuth (client only)
cp client/.env.example client/.env
# Add your GOOGLE_CLIENT_ID to client/.env

# Start dev servers
npm run dev
# → Client: http://localhost:5173
# → Server: http://localhost:3001
```

## Google OAuth Setup

1. [Google Cloud Console](https://console.cloud.google.com/) → APIs & Services → Credentials
2. Create **OAuth 2.0 Client ID** (Web application)
- Add **Authorized JavaScript origins**: `http://localhost:5173`
- Authorized redirect URIs can be left blank for client-side Google Identity button
3. Enable **Google Calendar API** in APIs & Services
4. Configure OAuth consent screen
- Add your account as a test user while in testing mode
- For scopes beyond basic profile (e.g., Calendar API), additional verification may be required for sensitive scopes
5. Copy **Client ID** → `client/.env` as `VITE_GOOGLE_CLIENT_ID`

**Note**: This app uses client-side OAuth via Google Identity Services. The ID token provides basic profile information. For full Google Calendar API access with refresh tokens, a server-side component would be needed to securely store credentials.

## Project Structure

```
/client Frontend (React + Vite)
/server Backend (Express - minimal)
/shared Shared TypeScript types
```

## Features

✅ Google Calendar OAuth & integration
✅ View your calendar events
🚧 Create calendar invites
🚧 Multi-user calendar sharing
🚧 Multi-platform calendar integrations
🚧 Cross-timezone event synchronization
7 changes: 7 additions & 0 deletions client/.env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# Client Environment Variables

# API URL for backend server
VITE_API_URL=http://localhost:3001

# Google OAuth Client ID (for frontend)
VITE_GOOGLE_CLIENT_ID=your_client_id_here
15 changes: 15 additions & 0 deletions client/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Calendar Sharing Web App</title>
<!-- Google Identity Services library -->
<script src="https://accounts.google.com/gsi/client" async defer></script>
</head>

<body>
<div id="root"></div>
<script type="module" src="/src/main.tsx"></script>
</body>
</html>
Loading