• Stars
    star
    110
  • Rank 316,770 (Top 7 %)
  • Language
    Java
  • License
    Apache License 2.0
  • Created over 8 years ago
  • Updated almost 6 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A material design Spotify client for Android

Pasta for Spotify is a third party material design Spotify client for Android.

About

Pasta for Spotify is a material design Spotify client for android that attempts to create a better user experience using the Spotify Web API. It was created to show an improvement in design over the official Spotify app, and to allow for older and slower devices to have quicker access to Spotify's services without losing (much) functionality. Some examples of this are as follows:

Design:

  • Touch areas are increased for small devices to be able to open things like menus and playlists more easily than the layout in the official app
  • A lot of access relies on swipe navigation within the app to speed up general user experience
  • The shuffle and repeat buttons have been removed from the now playing screen and moved into an "order tracks" dialog that is accessible from the menu of playlists and albums, and shows up in the settings menu. This provides greater consistency: in the official app you can order tracks by name, date, etc when viewing a list, but this becomes obsolete once shuffle is enabled. Moving all order-related options to the same place makes more sense from the perspective of both a new user and a user coming from the official app.
  • The backgrounds of different elements on the screen change color according to the album arts, allowing the user to quickly identify items based on color as well as text and image, and blend the image with the rest of the app so that it doesn't seem out of place.
  • Most parts of the app can be customized from the settings menu to allow the user to change their experience, including the main color scheme of the app and whether to display items as cards, tiles, or lists.
  • All parts of the official app that serve as a bookmark for an item are united into one "Favorites" section of the app. This means that artists that are being followed, playlists that have been created (or followed), and albums and tracks that have been "added" show up here, making the result of the "favorite" action obvious to most users instead of having to google "what does it mean to add a track in spotify?" (like I did).

Performance:

Though I am not sure what the official Spotify client uses to switch layouts, many current users have reported a large increase in loading speed of Pasta for Spotify versus the official app. This could be because of a few things:

  • The app uses Aidan Follestad's Async library to load content separately from the UI thread, which allows the user to navigate the app while content is loading, for example: navigating back to the previous task while content is loading will cancel the download.
  • Butterknife, by Jake Wharton, is used to bind views instead of the standard view binding method. Truthfully I have no idea what this means but it saves time so just go with it. ;)
  • Glide is used to load image urls provided by the spotify api. This saves a lot of loading time by asynchronously loading an image while scrolling as well as compressing it to speed up the download as much as possible.

Features

Pasta for Spotify has almost all the features of the official app, though playlists cannot be downloaded because that could potentially create a way for users to export songs from the app, and I'm sure Spotify would not like that.

  • Shows newly released albums and featured playlists
  • A favorites section for playlists, albums, songs, and artists
  • Search through all of Spotify's database
  • View different categories of music
  • Dynamic backgrounds that adapt to the album art
  • A light/dark theme in the settings menu
  • Options to change the global color scheme of the app
  • Change the ordering of songs in playlists and albums

Limitations

There are a few major issues with the implementation of the Spotify API, some of which are because of the API itself (meaning they cannot be fixed by me), and some are internal but require a lot of refactoring to come up with an appropriate solution. Examples:

  • The app will occasionally refuse to play a song until a restart. The "Unknown error, please restart" toast message is specific to this issue.
  • It is not possible to download a track to play it offline. See this issue for progress updates.
  • The 'restart' button usually causes an authentication error resulting in the app force closing.
  • The 'Sign Out' option in the settings menu will cause a crash if the official Spotify app is installed.
  • There are many features that are not accessible from a free account, such as playing songs and favoriting tracks.

Screenshots

Splash Screen Home Screen Now Playing

Contributing

Issues

Okay, there aren't really any guidelines over issue formatting provided that you don't create duplicate issues and test the app throughly before creating an issue (ex: try clearing the app data).

Pull Requests

I usually don't have any organization over how I handle issues and what I commit at any given time. If I'm interrupted in the middle of a session, I might commit a half-finished class that causes an error before the project even compiles. To prevent good work going to waste or having to be copied and pasted a lot to prevent merge conflicts, please contact me before you start working on any changes. This way we can decide who will work on the project when, and exactly what changes they will be making.

Links

Contributors:

License

Copyright 2016 James Fenn

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

More Repositories

1

Alarmio

A simple alarm clock focused on design, readability, and internet radio.
Java
338
star
2

ColorPickerDialog

A simple dialog making it quick and easy to add color picking functionality to any app.
Java
137
star
3

ScreenshotMaker

A small java applet to generate uniform Play Store screenshots with titles and descriptions.
Java
130
star
4

Status

A no-root status bar replacement for Android.
Java
127
star
5

Attribouter

A lightweight "about screen" library to allow quick but customizable attribution in Android apps.
Kotlin
115
star
6

Metronome-Android

A lightweight, well designed metronome app for Android.
Java
111
star
7

Pasta-Music

(unmaintained) A material design music player for Android, based off Pasta for Spotify
Java
106
star
8

SlideActionView

An Android view which provides a nice slide-to-left/right interaction.
Java
70
star
9

SignalStrengths

A library and sample application with the purpose of getting an accurate signal strength on different Android phones.
Java
53
star
10

MediaNotification

Slightly unstable attempt to replace all media notifications with Android O styled copies.
Java
45
star
11

Asteroid

A simple Android game based on avoiding incoming asteroids
Java
41
star
12

AdaptiveIconView

A library to allow easy implementation of pre-Oreo adaptive icon support in Android launchers.
Java
29
star
13

Crasher

An easy to use crash reporting library for Android.
Java
29
star
14

Cleaner

The only storage saving app that actually works! :D
Java
28
star
15

Calculator

(unmaintained) An attempt to make a decent calculator capable of complex functions without sacrificing design.
Java
27
star
16

Feedage

A basic "news reader" that sorts posts from various RSS feeds into categories.
Java
23
star
17

WearColorPicker

A lightweight color picker library for Android Wear.
Java
23
star
18

PaletteGetter

A library that can get the color scheme of any app.
Java
21
star
19

declarativ

A declarative HTML rendering library that is definitely not JSX.
TypeScript
20
star
20

RadialLayout

A scrollable-ish view that arranges images in circles extending from the center of the screen.
Java
19
star
21

mdjavadoc

A script that generates markdown javadocs for use in Jekyll and GitHub Pages.
JavaScript
18
star
22

fennifith.github.io

My personal website.
SCSS
16
star
23

Tooltips

(unmaintained) A small tooltips library for Android based on Material Design.
Java
15
star
24

TimeDatePicker

A simple Android library containing several time/date pickers and dialogs.
Java
15
star
25

Scrurl

Scrolling urls, a.k.a. the second worst website I've ever made.
HTML
15
star
26

Asciimg

A command line tool to display images in ASCII.
JavaScript
14
star
27

Cronhub-Monitor

A native CronHub notification client for Android.
Java
14
star
28

Bagels

A live wallpaper that blurs the screen after a period of time without any actions.
Java
14
star
29

Rocket

(unmaintained) A basic tap-to-fly game experimenting with view animation.
Java
13
star
30

APReader

A small app that displays Android Police articles without waiting for the website to load.
Java
10
star
31

WearLocker

A basic lock screen that prevents accidental touches on Android Wear 2.0.
Java
10
star
32

SunriseSunsetView

A lightweight Android view used for displaying and/or editing sunrise and sunset times.
Java
9
star
33

Wallpapers

(unmaintained) A material design wallpaper dashboard template
Java
9
star
34

AndroidUtils

A bunch of util classes that I use in almost every project I write.
Kotlin
9
star
35

MonkeyTester

Determines whether a user is a monkey, a goat, or both, based on values obtained from android's ActivityManager and UserManager.
Java
9
star
36

ExceptionalTraveler

An implementation of the Traveling Salesperson Problem using the fundamentals of Exceptional Programming.
Java
8
star
37

PortAuthorityFeedbackReporter

A small application to make it easier for riders to report issues to the Pittsburgh Port Authority bus system.
Java
8
star
38

Monochrome

A monochromatic pixelated adventure game.
Java
7
star
39

FelixLauncher

(unmaintained) Dark-themed launcher that supposedly saves a lot of battery.
Java
6
star
40

AAH

A basic cmdline program for Linux to help me do basic things I should already know. Ex: "AAH drive mount"
Go
6
star
41

Paper-Tales

A modified version of Fornax that gets its content from Wordpress articles.
Java
5
star
42

ChargeScreen

(Unmaintained) An annoying screen that pops up when you plug your phone in.
Java
5
star
43

dotfiles

My "generic Linux distro" dotfiles. Used to sync stuff between laptops and not much else.
Shell
4
star
44

bugiver

A small website that gives you an issue to fix when there is nothing to do.
HTML
4
star
45

Blackboard

(unstable) An HTML scraping, JavaScript injecting, spaghettificating, massive heap of Blackboard parsing mobile client.
Java
3
star
46

Robotics

Documentation of stuff done in my robotics class.
C
2
star
47

photos

A collection of my photography, published under the Creative Commons License.
HTML
2
star
48

styles

A collection of all my CSS styles, organized and documented.
HTML
2
star
49

HackNA-Notes

A small sample project created for a workshop at HackNA.
Java
2
star
50

discord-github-thing-doer

A Discord bot that automates github-related tasks for my server.
JavaScript
1
star
51

Music

A collection of my piano compositions and other music-related projects.
HTML
1
star
52

music-automata-api

An Rx-based interface for programming musical automata in JavaScript. (WIP)
JavaScript
1
star
53

pixularautomaton

A basic cellular automaton that makes pretty animations from images.
HTML
1
star
54

MarkdownToJupyter

NodeJS script to execute & convert code blocks in markdown files to a JupyterLab Notebook.
JavaScript
1
star