Create stunning posters of your favorite albums powered by Spotify's API
Full-stack web application with user authentication, profile management, and poster creation
Posterfy is a full-stack web application that allows users to create visually appealing posters for their favorite music albums. Built with a modern architecture featuring:
- Frontend: React-based SPA with responsive design and multilingual support
- Backend: Node.js/Express API with OAuth authentication (Google & Spotify)
- Database: MongoDB for user management and data persistence
- Integration: Spotify Web API for album data and artwork
Powered by Spotify's free API, Posterfy enables users to search for albums, gather album data, and organize the information into custom posters using the HTML Canvas element.
This project is educational, non-commercial, and fully open to contributions. All rights to the images and data are owned by Spotify and the respective artists.
Posterfy
βββ client/ # React frontend (Vite)
β βββ src/
β β βββ components/
β β βββ pages/
β β βββ contexts/
β β βββ services/
β βββ public/
βββ server/ # Node.js backend (Express)
β βββ src/
β β βββ controllers/
β β βββ models/
β β βββ routes/
β β βββ services/
β β βββ middlewares/
β βββ package.json
βββ README.md
1οΈβ£ Authentication: Users sign in with Google or Spotify OAuth for secure access.
2οΈβ£ Profile Management: Create and manage user profiles with unique usernames.
3οΈβ£ Album Search: Users enter the name of the album they want to create a poster for.
4οΈβ£ Album Selection: Posterfy displays search results from Spotify's database, and users select their desired album.
5οΈβ£ Data Gathering: Once the album is selected, Posterfy fetches all the necessary data and images from Spotify's Web API.
6οΈβ£ Poster Customization: Users can customize poster layouts, colors, fonts, and styling options.
7οΈβ£ Visual Organization: The gathered data is then visually organized into a custom layout using the HTML Canvas element.
8οΈβ£ Poster Generation: Finally, a rendered image of the poster is generated, which the user can save or share.
Q: Do I need to create an account to use Posterfy?
No, you don't need a Spotify account to create posters. However, developers need Spotify API credentials to run the app locally.
Q: Can I use Posterfy without a Spotify account?
A: You can sign in with Google, but you'll need Spotify API credentials to run the app locally for development.
Q: Is it possible to create a poster with a custom album?
A: Currently, Posterfy only supports albums from Spotify's database. Custom albums are not supported yet.
Q: What file format can I export the poster in?
A: Posters can be exported as PNG images.
Q: Can I change my username after creating my account?
A: Yes, you can update your profile information including your username from the dashboard.
- π Bug Reports: Found a bug? Open an issue
- π‘ Feature Requests: Have an idea? We'd love to hear it!
- π Translations: Help make Posterfy available in more languages
- π Documentation: Improve our docs and examples
- π¨ Design: Contribute new poster templates and styles
- Follow the existing code style and conventions
- Write clear, descriptive commit messages
- Add tests for new features when applicable
- Update documentation as needed
Special thanks to all contributors who have helped make Posterfy better:
- debug420 - For valuable improvements and feature contributions
- All beta testers and community members providing feedbacks
Can I create posters for custom/local albums?
Currently, Posterfy only supports albums available in Spotify's database. Support for custom albums may be added in future versions.
What image formats are supported for export?
Posters can be exported as high-quality PNG images. Additional formats may be supported in future updates.
Is there a mobile app available?
Posterfy is a web application that works perfectly on mobile browsers. There's no dedicated mobile app at this time.
Can I use these posters commercially?
No, this project is for educational and non-commercial use only. All album artwork and data belong to Spotify and the respective artists.
- π Smart Search: Find any album from Spotify's vast database
- π¨ Multiple Templates: Choose from various poster layouts and styles
- π― High-Quality Output: Export posters in PNG format with crisp quality
- π± Mobile Friendly: Responsive design that works on all devices
- β‘ Fast Performance: Built with React and Vite for optimal speed
- π Multilingual: Support for multiple languages (English, Portuguese, Spanish, Chinese)
- π Custom Styling: Personalize colors, fonts, and layout options
- π OAuth Authentication: Secure login with Google and Spotify
- οΏ½ JWT Tokens: Token-based authentication (serverless-compatible)
- οΏ½π€ User Management: Profile creation and management with unique usernames
- π Account Linking: Link multiple OAuth providers to the same account
- π‘οΈ Session Management: Secure JWT-based authentication
- π User Dashboard: View and manage user profiles and account connections
- Node.js (version 16 or higher)
- npm or yarn package manager
- MongoDB (local installation or cloud service like MongoDB Atlas)
- Spotify Developer Account (for API credentials)
- Google OAuth credentials (optional, for Google authentication)
-
Clone the repository
git clone https://github.com/avictormorais/posterfy.git cd posterfy -
Set up the backend
cd server npm install -
Configure backend environment variables
Create a
.envfile in theserver/directory:# Database MONGO_URI=mongodb://localhost:27017/posterfy # JWT Authentication (recommended for serverless deployments) JWT_SECRET=your-super-secret-jwt-key-change-this-in-production JWT_EXPIRES_IN=30d # Session (legacy - not used with JWT) SESSION_SECRET=your-session-secret-key # OAuth - Google (optional) GOOGLE_CLIENT_ID=your_google_client_id GOOGLE_CLIENT_SECRET=your_google_client_secret # OAuth - Spotify SPOTIFY_CLIENT_ID=your_spotify_client_id SPOTIFY_CLIENT_SECRET=your_spotify_client_secret # Server PORT=5000 NODE_ENV=development CLIENT_URL=http://localhost:5173
-
Set up the frontend
cd ../client npm install -
Configure frontend environment variables
Create a
.envfile in theclient/directory:VITE_API_BASE_URL=http://localhost:5000 VITE_SPOTIFY_CLIENT_ID=your_spotify_client_id
-
Start the backend server
cd ../server npm startThe backend will run on
http://localhost:5000 -
Start the frontend development server
cd ../client npm run devThe frontend will run on
http://localhost:5173 -
Open your browser
Navigate to
http://localhost:5173to see the application running.
To build both frontend and backend for production:
Frontend:
cd client
npm run buildBackend:
cd server
npm run build # if using a build scriptThe optimized frontend files will be generated in the client/dist/ directory.
- Visit the Spotify Developer Dashboard
- Create a new app
- Add
http://localhost:5000/auth/spotify/callbackto the Redirect URIs - Copy the Client ID and Client Secret to your
.envfile
- Visit the Google Cloud Console
- Create a new project or select an existing one
- Enable the Google+ API
- Create OAuth 2.0 credentials
- Add
http://localhost:5000/auth/google/callbackto the authorized redirect URIs - Copy the Client ID and Client Secret to your
.envfile
We welcome contributions to Posterfy! This is a full-stack project with opportunities in both frontend and backend development.
- π¨ Frontend: React components, UI/UX improvements, new features
- βοΈ Backend: API development, authentication, database optimization
- π§ DevOps: Docker, CI/CD, deployment configurations
- π± Mobile: Progressive Web App improvements
- π i18n: New language support and translations
- π Bug Reports: Found a bug? Open an issue
- π‘ Feature Requests: Have an idea? We'd love to hear it!
- π Translations: Help make Posterfy available in more languages
- π Documentation: Improve our docs and examples
- π¨ Design: Contribute new poster templates and styles
- π Security: Help improve authentication and data security
- Follow the existing code style and conventions
- Write clear, descriptive commit messages
- Add tests for new features when applicable
- Update documentation as needed
- Test both frontend and backend changes
- Follow the installation steps above
- Create a new branch for your feature:
git checkout -b feature/your-feature-name - Make your changes
- Test thoroughly (both frontend and backend)
- Submit a pull request
Please ensure that your code passes all tests and adheres to the project's style guide.
A huge thank you to debug420 for contributing improvements to Posterfy! This fork introduced some great new features, your contributions help make Posterfy even better. π
This project is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) license.
| Permission | Allowed |
|---|---|
| β Share | Copy and redistribute the material in any medium or format |
| β Commercial Use | Cannot use for commercial purposes |
| β Modify | Cannot remix, transform, or build upon the material |
| Must give appropriate credit and link to license |
For complete license terms, see the LICENSE file or visit creativecommons.org.
- π Educational Purpose: This project is created for educational and non-commercial purposes only
- π User Data: User accounts and profile information are stored securely. We do not share personal data with third parties
- π΅ Content Rights: All album artwork, data, and information belong to Spotify and the respective artists
- π‘οΈ No Warranty: This software is provided "as is" without any warranty
- π Analytics: This app may collect anonymous usage data to improve user experience
- π Privacy: OAuth tokens are handled securely and never stored in plain text
- React 18 - UI library
- Vite - Build tool and dev server
- Styled Components - CSS-in-JS styling
- React Router - Client-side routing
- React i18next - Internationalization
- Axios - HTTP client
- Node.js - Runtime environment
- Express.js - Web framework
- MongoDB - NoSQL database
- Mongoose - MongoDB object modeling
- Passport.js - Authentication middleware
- Express Session - Session management
- Spotify Web API - Music data and album artwork
- Google OAuth 2.0 - Authentication provider
- Spotify OAuth 2.0 - Authentication provider
Made with β€οΈ by Victor Morais
π Full-stack music poster creation platform

