Skip to content

Commit

Permalink
v1.0.0 #2
Browse files Browse the repository at this point in the history
  • Loading branch information
leogdion committed Sep 12, 2024
1 parent cac03ee commit ad2c457
Show file tree
Hide file tree
Showing 16 changed files with 579 additions and 63 deletions.
120 changes: 60 additions & 60 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,64 +1,64 @@
# How does Server Side Swift Workout in the Real World?
1. [Introduction](docs/01-introduction.md)
1. Brief overview of Heartwitch: The inspiration behind gBeat
2. Introduction to gBeat: A health and fitness live streaming app
2. [The Power of Full Stack Swift](docs/02-full-stack-swift.md)
1. Unified Language Ecosystem
2. Type Safety Across the Stack
3. Performance Benefits
4. Apple's Ecosystem Integration
5. Growing Server-Side Swift Community
6. Simplified Deployment and Scaling
7. Developer Productivity
8. Future-Proofing
9. Case Study: gBeat's Experience with Full Stack Swift
3. [The gBeat Ecosystem](docs/03-gbeat.md)
1. How the applications work
2. Integration with Apple Watch
3. User experience highlights
4. [Technical Deep Dive: Full Stack Swift Implementation](docs/04-technology)
1. [Authentication system with Sign in with Apple](docs/04-technology/01-authentication.md)
1. Implementation across iOS and watchOS
2. Challenge: Sign in with Apple not available on Apple Watch simulator
1. Impact on development and testing process
2. Workarounds and solutions
2. Development Server Auto-discovery (emphasize this as a key technical issue)
3. Communication with Redis and WebSockets
4. Implementing Apple Push Notification System (APNs)
5. OpenAPI Integration
1. Generating API documentation
2. Ensuring consistency between API specification and implementation
3. Benefits for frontend-backend communication and third-party integrations
6. Web Development: Building the gBeat Website
1. Choosing VueJS as the frontend framework
1. Advantages for a fitness streaming application
2. Integration with Swift backend
2. Implementing TypeScript for improved type safety
1. Benefits in a large-scale application
2. Synergies with Swift's strong typing
3. Utilizing Vite for build tooling
1. Fast development experience
2. Optimized production builds
4. Webpack configuration for advanced scenarios
5. Challenges and solutions in creating a responsive fitness streaming interface
6. Performance optimizations for live video streaming
5. Challenges and Solutions
1. Android integration
1. Integrating Firebase Cloud Messaging (FCM) for cross-platform support
2. Implementing Sign in with Google
2. Creating a White Label app
1. Issues with React Native and how Swift addressed them
3. Developing a Chrome Extension for YouTube Workouts
1. Bridging the gap between gBeat and popular YouTube fitness content
2. Technical challenges in integrating with YouTube's player
3. User experience considerations for seamless workout tracking
4. How this extension complements the core gBeat application
6. Deployment and CI/CD

## [Introduction](docs/01-introduction.md)
* Brief overview of Heartwitch: The inspiration behind gBeat
* Introduction to gBeat: A health and fitness live streaming app
## [The Power of Full Stack Swift](docs/02-full-stack-swift.md)
* Unified Language Ecosystem
* Type Safety Across the Stack
* Performance Benefits
* Apple's Ecosystem Integration
* Growing Server-Side Swift Community
* Simplified Deployment and Scaling
* Developer Productivity
* Future-Proofing
* Case Study: gBeat's Experience with Full Stack Swift
## [The gBeat Ecosystem](docs/03-gbeat.md)
* How the applications work
* Integration with Apple Watch
* User experience highlights
## [Technical Deep Dive: Full Stack Swift Implementation](docs/04-technology)
### [Authentication system with Sign in with Apple](docs/04-technology/01-authentication.md)
* Implementation across iOS and watchOS
* Challenge: Sign in with Apple not available on Apple Watch simulator
### [Development Server Auto-discovery](docs/04-technology/02-sublimation.md)
* The challenge of discovering local development servers in full stack development
* Specific issues with Apple Watch development
* Introduction to Sublimation: A Swift package solution
* Ngrok integration (initial approach)
* Bonjour implementation (ultimate solution)
* Impact on gBeat development
### [Communication with Redis and WebSockets](docs/04-technology/03-websockets-redis.md)
### [Implementing Apple Push Notification System](docs/04-technology/04-apns.md)
### [Complementary iPhone App and WatchConnectivity](docs/04-technology/05-iPhone.md)
* Developing a companion iPhone app for the AppStore
* Implementing WatchConnectivity
* Synchronizing workout data
* Challenges and solutions
* Impact on overall user experience
### [Web Development: Building the gBeat Website](docs/04-technology/05-web-development.md)
* Choosing VueJS as the frontend framework
* Implementing TypeScript for improved type safety
* Utilizing Vite for build tooling
* Webpack configuration for advanced scenarios
* Challenges and solutions in creating a responsive fitness streaming interface
### [Challenges and Solutions](docs/05-challenges.md)
* Android integration
* Creating a White Label app - Issues with React Native and how Swift addressed them
* Developing a Chrome Extension for YouTube Workouts
### [Deployment and CI/CD](docs/06-deployment.md)
1. Deploying to Heroku
2. Setting up Continuous Integration with GitLab and GitHub
7. Future Plans
1. Upcoming features or improvements
2. Potential expansions of the gBeat platform
8. Conclusion
### [Future Plans](docs/07-future.md)
* OpenAPI Integration
* React Native XCFramework/Node Module
* Protobuf
* Hack Watch Networking
* Hosting Options
* Other Apple Platforms
* Other Watch Platforms
### Conclusion TBD
1. Recap of key learnings
2. Encouragement for attendees to explore Full Stack Swift for their projects
2. Encouragement for attendees to explore Full Stack Swift for their projects


3 changes: 2 additions & 1 deletion docs/01-introduction.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
# Why

It's one thing to create a server-side app which works for your iPhone and runs a simple service but I wanted to create an app which was dynamic and used Apple's tiniest device - the Apple Watch.
# Introduction to Server-Side Swift

It's one thing to create a server-side app which works for your iPhone and runs a simple service but I wanted to create an app which was dynamic and used Apple's tiniest device - the Apple Watch.

## Brief overview of Heartwitch: The inspiration behind gBeat

Expand Down
4 changes: 3 additions & 1 deletion docs/02-full-stack-swift.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,4 +38,6 @@ Being able to easily debug and analyze server-side and device side code via Xcod

## Case Study: gBeat's Experience with Full Stack Swift

Let's now talk about how gBeat took advatage of this.
Let's now talk about how gBeat took advantage of this.

380 users
4 changes: 3 additions & 1 deletion docs/04-technology/01-authentication.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,9 @@
- Simulator can fake HealthKit stats be not Sign In With Apple `what happens`
- How can we fake **sign in with apple**

### Impact on development and testing process
### Impact on development and testing process

`link to simulator services and code snippet`

- On development server save the token as a file on the Mac and copy it to the simulator directly
- Login via web site
Expand Down
Loading

0 comments on commit ad2c457

Please sign in to comment.