···11## Conference Profile
12For starters, we're going to have a custom conference profile. Attendees and speakers (and anyone else!) can login and create an extended profile. Inspired by [Discover Toronto](https://discover.toronto.inc/), we had an [initial discussion in the forum](https://discourse.atprotocol.community/t/conference-profiles/186) and are going to work on fleshing this out here with detailed issues.
1314-# Astro Starter Kit: Minimal
00000000000000001516-```sh
17-npm create astro@latest -- --template minimal
18-```
001920-> 🧑🚀 **Seasoned astronaut?** Delete this file. Have fun!
00002122-## 🚀 Project Structure
02324-Inside of your Astro project, you'll see the following folders and files:
2526```text
27/
28├── public/
29├── src/
30-│ └── pages/
31-│ └── index.astro
0000000000032└── package.json
33```
34-35-Astro looks for `.astro` or `.md` files in the `src/pages/` directory. Each page is exposed as a route based on its file name.
36-37-There's nothing special about `src/components/`, but that's where we like to put any Astro/React/Vue/Svelte/Preact components.
38-39-Any static assets, like images, can be placed in the `public/` directory.
4041## 🧞 Commands
42···51| `npm run astro ...` | Run CLI commands like `astro add`, `astro check` |
52| `npm run astro -- --help` | Get help using the Astro CLI |
5354-## 👀 Want to learn more?
5556-Feel free to check [our documentation](https://docs.astro.build) or jump into our [Discord server](https://astro.build/chat).
000
···11## Conference Profile
12For starters, we're going to have a custom conference profile. Attendees and speakers (and anyone else!) can login and create an extended profile. Inspired by [Discover Toronto](https://discover.toronto.inc/), we had an [initial discussion in the forum](https://discourse.atprotocol.community/t/conference-profiles/186) and are going to work on fleshing this out here with detailed issues.
1314+# Astro ATProto OAuth Starter
15+16+A minimal [Astro](https://astro.build) starter template demonstrating OAuth authentication with AT Protocol (ATProto), the decentralized social networking protocol used by Bluesky and other services.
17+18+This starter includes:
19+- Complete OAuth authentication flow using `@atproto/oauth-client-node`
20+- Cookie-based session management
21+- Profile display after authentication
22+- Login/logout endpoints
23+- Tailwind CSS and DaisyUI styling
24+25+## 🚀 Getting Started
26+27+1. **Install dependencies:**
28+ ```sh
29+ npm install
30+ ```
3132+2. **Configure environment variables:**
33+ ```sh
34+ cp .env.template .env
35+ ```
36+ Edit `.env` if you need to change the port (default: 4321) or set a public URL.
3738+3. **Start the development server:**
39+ ```sh
40+ npm run dev
41+ ```
42+ The app will be available at `http://localhost:4321`
4344+4. **Try logging in:**
45+ Enter your AT Protocol handle (e.g., `alice.bsky.social`) to authenticate.
4647+## 📁 Project Structure
4849```text
50/
51├── public/
52├── src/
53+│ ├── lib/
54+│ │ ├── context.ts # OAuth client singleton
55+│ │ ├── oauth.ts # OAuth client configuration
56+│ │ ├── session.ts # Session management
57+│ │ └── storage.ts # Cookie-based stores
58+│ ├── pages/
59+│ │ ├── api/
60+│ │ │ ├── login.ts # Login endpoint
61+│ │ │ ├── logout.ts # Logout endpoint
62+│ │ │ └── oauth/
63+│ │ │ └── callback.ts # OAuth callback handler
64+│ │ └── index.astro # Main page with login UI
65+│ └── styles.css
66└── package.json
67```
0000006869## 🧞 Commands
70···79| `npm run astro ...` | Run CLI commands like `astro add`, `astro check` |
80| `npm run astro -- --help` | Get help using the Astro CLI |
8182+## 📚 Learn More
8384+- [Astro Documentation](https://docs.astro.build)
85+- [AT Protocol Documentation](https://atproto.com)
86+- [@atproto/oauth-client-node](https://github.com/bluesky-social/atproto/tree/main/packages/oauth/oauth-client-node)
87+- [Bluesky](https://bsky.app)