Git Product home page Git Product logo

artify-macos's Introduction

Artify App Logo

Artify Build Status 0.5.1

A macOS X application for bringing dedicatedly 18th century Arts to everyone ๐ŸŒŽ.

Wallpaper โ€ข Features โ€ข Downloads โ€ข Technologies โ€ข 3rd Libraries โ€ข Development โ€ข FAQ โ€ข

Wallpaper

Red Vineyard At Arles
The Starry Night
The Wanderer Above The Sea of Fog

Features

  • ๐Ÿ˜ Hand-picked 18th Arts.
  • ๐Ÿ‘จโ€๐Ÿ’ป Generate beautiful wallpaper depend on your screen size.
  • ๐Ÿ‘‘ Automatically fetch feature art for every days.
  • ๐ŸŒŽ On-demand art, You can pick your favorites art-style, artist (Coming soon ๐Ÿ™‡๐Ÿปโ€โ™‚๏ธ)
  • ๐Ÿ‰ Open-source project.
  • ๐Ÿ’ฏ Totally Free.

Downloads

All downloads are available at Release page

macOS Requirement

The minimum version supported is macOS 10.11.

Technologies

3rd Libraries

Development

Artify requires Artify Core as a backend. Pls follow this Instruction in order to start the core successfully ๐Ÿ˜Ž

After starting the development server.

  • Clone this project
  • Run $ pod install
  • Open ArtifyWorkspace.xcworkspace
  • Happy coding ๐Ÿ˜

FAQ

  • Is it a original idea?

Nowadays, Almost idea is mixing. The original idea was inspired by a guy in HN-Show I've seen in a couple months ago. It's just a tool to generate a photo after dragging manually my original picture. It has lack of capability.

I'm a lazy guy, I'd something could do it automatically every time. Ultimately, I came up with this idea.

  • Where is the Backend side?

I'm in charge of developing the Artify Core, as a Golang backend serverside. > Feel free to contribute cooperatively.

  • What is the current progress?

Here is Open Ticket and Close Ticket

  • Why do you choose RxSwift + MVVM?

I have solid experience when working with RxSwift + MVVM for a couple projects on Production. I'm so happy when writing concise, elegant Observable, Driver,... rather than clumsy functions with tons of nested-callbacks.

If something makes me happy, I will follow it. Simple enough ๐Ÿ˜‚

  • Is this app built with Swift?

Yes, Artify is built on top of Swift 4.1 and macOS Native library.

  • Why is it an OSS?

The source code is a trash if keep it in your inventory forever. I'd contribute back to the dev community when I have an opportunity.

The best way is publishing your source code ๐Ÿ‘จโ€๐Ÿ’ป.

  • Why is 18th century art?

Every time I have a short trip to an overseas country, I often spent 1 or 2 days to visit all famous art museum. I could stand for an hour to look at the detail, the scrape from those old oil photo. Individual traits could represent the history, the effort, the dream from original authors.

I realize I fall in love with the 18th art somehow ๐Ÿคฃ

Then I come up with the idea, why don't we bring it to everybody, who has the same passion as me.

Let imagine, every day, when I open my laptop at 9 AM, I can see the best photo of this day, with detail information, history, and the author. That would be amazing ๐Ÿ˜ฑ

Without considering, I start to develop the macOS app as well as the Artify-Core, which is written by Golang.

All of the art pictures will be hand-picked by me and my best girlfriend. Hope you enjoy it ๐Ÿ˜

  • How does Artify generate the beautify wallpaper?

[DR;TL]

  1. Determine the golden size, which relies on your current screen size. It makes sure every generated wallpaper is as nice as possible.
  2. Draw this image with the desired size in the middle
  3. Draw shadow
  4. Scale the background with "aspect to fill" mode
  5. Apply Gaussian algorithm
  6. Combine everything and cached locally.

[Detail implementation]

Here is the algorithm

  • Where does the Artify's resource come from?

Every art pictures are hand-picked from WikiArt.

If you wonder how I collect the data. Here is my partner, Spider Man, which is a Ruby script.

The conjunction of Nokogiri and Watir are perfect for this scenario. Indeed,I'm a lazy man, I don't want to collect data like a manual labor ๐Ÿ˜….

  • What are the tough problems, which you confronts when developing this project?

The Implementation of the Artify Core by Golang with latest technologies and the Artify Gaussian algorithm are two things take me most the effort.

  • Can I become a contributor?

Defintely, I appreciate your effort to become a contributor. Clone the project and setup your workspace. Happy coding guys ๐Ÿšข

  • Do you have personal blog?

Yes, I often write blog at My lab ๐Ÿ‘จโ€๐Ÿณ

  • How do I contact you?

Don't hesitate to open Issue on Github if you encounter any problems. Or give a welcome hug to me at [email protected].

artify-macos's People

Contributors

kamaln7 avatar linusu avatar nghiatranuit avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

artify-macos's Issues

Support Travis CI/CD

Acceptance Criteria

  • Setup Travis CI/CD with free plan
  • Integrate Travis to Artify-MacOS successfully

About screen

Acceptance Criteria

  • Simple About App (version, build number, github)

Integrate Let Move

Sparkle requires the App must be in Application folder.

We should integrate Let Move to notify user to move to Application automatically.

Acceptance Criteria

  • Integrate Let Move
  • Work effortlessly

Tracking

Support Answer tracking for Artify app.

Acceptance Criteria

  • Tracking open app
  • Tracking fetch success / failed
  • Tracking Turn on/off launch open app
  • Tracking Exit app

Foundation app

Acceptance Criteria

  • Initialize the foundation app
  • RxSwift, RxCocoa, RxOptional
  • MVVM architecture
  • Scenes folders.

Notification Bar

It would be nice to notify the user with the Notification after applying the wallpaper.
The notification Bar should has concise photo information and author

Acceptance Criteria

  • Support general notification bar (multi-purpose)
  • Show Notification after applying new wallpaper
  • Notification payload: Name Photo + Name Author. Ex: The Starry Night - Vincent van Gogh
  • Open the original page (Wiki Art) when tapping on the notification bar

NSFW Filter

People have different opinions about what desktop images are appropriate for the workplace. Please allow the user to tag possibly controversial images as "NSFW" (not safe for work) and use a checkbox option to include or omit those images from those available for display in the future.

Bug: Can't Update the wallpaper

Description

There is a notice that Artify is unable to update a wallpaper if the main screen is not active.

How to reproduce

  1. Get Feature photo
  2. While fetching the photo, we active different window screen.
  3. When it it's finished, there is no update.

Acceptance Criteria

  • Able to update the the wallpaper regardless of any active window.

Preference Screen

Acceptance Criteria

  • Implement simple Preference
  • Has Start-up, interval time, folder to save, update app

Support "Auto enchantment photo"

As I experience, there are minor of original arts from WikiArt, which are slightly dark.
I would be great if we support "Auto enchantment photo" to make it brighter.

Acceptance Criteria

  • Auto enchantment photo before drawing.
  • Do a research how to implement photo enchantment appropriately.

Desktop window & Status Bar app

Background

MacOS app is capable of adding a NSWindow, which contains ViewController's view as a root view at Desktop level.

It's the crucial factor in order to support the interactable and dynamic desktop.

Acceptance Criteria

  • Support Desktop window
  • Basic Status bar app

Randomize photo

I would be great if Artify could fetch best art randomly.

Acceptance Criteria

  • Support Randomize button on Status Bar app
  • Fetch Randomly photo
  • Able to cancel on-going operation and start new one.

Generate beautiful art

Description

Generate art from particular image, which downloaded from Artify-Core

Acceptance Criteria

  • Beautiful ratio of art image and current screen resolution (See design)
  • Gradient and blurred background, which generates from this art image
  • Present to desktop by following #1

Networking

Tiny networking class

Acceptance Criteria

  • Small and clean Moya networking layer

Endpoint

  1. GET artify.com/photo/today

Support Fastlane and integrating to exist CI/CD

It takes tons of time when distributing app manually.
Here is what I do

  1. Increase build number and build version
  2. Create git tag
  3. Archive the build
  4. Sign with private key (Sparkle app)
  5. Zip with format: Artify_{version_number}.zip
  6. Upload to my /artify Dropbox folder and copy the share link (?dl=1)
  7. Update appcast.xml
  8. Create new Github Release and copy Change Log and submit the zip build.

It's so high-consume task ever.

Acceptance Criteria

  • Integrate Fastlane to do it automatically
  • Integrate to our Travis

Ref:

https://docs.fastlane.tools/actions

Download service

Acceptance Criteria

  • GET /photo/day once in a day
  • Download and generate background #3
  • Present on background desktop

Support Indicator Status Bar when processing

It's frustrated when the app have no acknowledgment to user when it is fetching the large background.

Acceptance Criteria

  • Support animation on status bar
  • Animate when fetching the icon, and stop until the wallpaper is set

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.