windmill
is a simplified video-sharing social network built using Swift 5 and Go, where users can record, edit and post looping short-form videos.
Features | |
---|---|
📹 | Record "TikTok" style looping videos |
✏️ | Add custom text and captions to your videos |
👤 | Create an account and customize your profile |
💚 | Follow friends and like their videos |
📰 | Browse newsfeed of videos from users you follow |
👋 | View activity feed to see who is interacting with your profile |
🐦 | Swift 5 |
➡️ | Go |
First you will need to create a MongoDB instance, this can be either local or via MongoDB Atlas. Note your database URI.
Once this is done, you will need to create an AWS S3 bucket and set the store to public. Follow this link for instructions on how to make this public (https://docs.aws.amazon.com/AmazonS3/latest/user-guide/block-public-access-bucket.html).
# Update and install deps
pod update
pod install
Navigate here to get both of those (https://developers.google.com/identity/sign-in/ios/start-integrating) and follow all instructions
# Add credentials and other config settings to Config.plist file
ROOT_URL = http://localhost:8080
BUCKET_URL = https://my-project.s3.us-east-2.amazonaws.com
GOOGLE_CLIENT_ID = ENTER ID HERE
APP_BUNDLE_ID = io.liamreardon.windmill.dev
APP_NAME = windmill
# Build go.mod
go build
# Install dependencies
go install
# Create .env file in windmill-backend directory and add MongoDB URI + AWS S3 vars
touch .env
# Include these lines but swap in your own urls and vars
DB_URI=mongodb://localhost:27017/myproject (this could be the uri for a local instance or MongoDB Atlas)
AWS_S3_BASE=https://myproject.s3.us-east-2.amazonaws.com/users/
AWS_S3_REGION=us-east-2
AWS_S3_BUCKET=my-project
# Add MongoDB URL to config.go
func GetConfig() *Config {
uri, exists := os.LookupEnv("DB_URI")
if exists {
return &Config{
DbURI: uri,
Port: ":8080",
}
}
return &Config{}
}
# Run
go run main.go
- Have an idea for a feature? Open an issue.
- Found a bug? Open an issue.
- If you want to contribute to the project, submit a pull request.
- NextLevel - Rad Media Capture in Swift
- Pageboy - A simple, highly informative page view controller
- RPCircularProgress - Circular progress UIView subclass with UIProgressView properties
- SwiftKeychainWrapper - A simple wrapper for the iOS Keychain to allow you to use it in a similar fashion to User Defaults
- lottie-ios - An iOS library to natively render After Effects vector animations
- GoogleSignIn - Add Google Sign-In to Your iOS App
- Pastel - Gradient animation effects
- SDWebImage - Asynchronous image downloader with cache support as a UIImageView category
- Google/UUID - Go package for UUIDs based on RFC 4122 and DCE 1.1: Authentication and Security Services
- mongo-go-driver - The Go driver for MongoDB
- bcrypt - Go package for the bcrypt hashing algorithm
- aws-sdk-go - AWS SDK for the Go programming language
- govalidator - Request data validation
- gorilla/mux - A powerful HTTP router and URL matcher for building Go web servers
windmill is available under the MIT license, see the LICENSE file for more information.