Self-hosted service
cloudfavorites/favorites-web avatar
cloudfavorites/favorites-web

Favorites Web: a self hosted bookmark site on Spring Boot

云收藏 Spring Boot 2.X 开源项目

4,846 stars1,699 forksHTMLLicense varies

At a glance

What is it?
Favorites Web is a Spring Boot web application for bookmarking and categorising articles, with browser bookmark import, export for backup, and public collections other users can browse. It suits people who want their reading list on their own server, and it runs a 2018 era stack.
Who is it for?
Adopt Favorites Web if you want a bookmarking service on your own server, because it gives you import from the browser, export for backup, accounts, and a public page where other users can browse what you have collected. Do not adopt it expecting an actively developed project, since the tagged releases stop at favorites 1.3.0 in July 2018 even though the branch was pushed to more recently, and the stack is Spring Boot 2, Thymeleaf 3 and MySQL 5.6 with JDK 8.
Can I use it commercially?
Not without permission. GitHub finds no licence file in the repository, and without a licence all rights are reserved by default: you may read the code but not reuse it. Check the README, or ask the authors, before using it.
Is it still maintained?
Yes. The repository last received commits 10 days ago.
What is it written in?
Mainly HTML, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 23, 2026, and from our analysis. They are not legal advice.

Editorial analysis

A reading list you host, with a public face

Favorites Web is an open source website built with Spring Boot whose purpose is simple: let a user collect links online, sort them into categories, and retrieve them later. The project calls itself a place to keep favourite websites and articles, and describes it as a temporary store for things to read later.

The feature list in the README covers collecting, categorising and searching articles, exporting and importing including from the browser, liking, sharing and discussion, registration, login and personal accounts, temporary collections, and viewing other people's collections.

That last item is the one that distinguishes it from a personal read-later service. The site lets you look at what other people have made public, with the stated purpose of finding out what the leading people in your field are learning, and the description says that from shared collections you can find the most familiar stranger. That is a social feature wrapped around a bookmark store, and it explains why the project has a public homepage at favorites.ren rather than being a purely private tool.

For a self hosted deployment, the import path is the practical entry point. You can pull your existing browser bookmarks into the site, and you can export what you have collected back out as a backup, so the service is not a one-way trap for your data.

The stack is a 2018 snapshot, not a modern one

The badges at the top of the README pin the versions: Spring Boot 2.0, Thymeleaf 3.0, MySQL 5.6, JDK 1.8 and Maven 3.5.0, with a licence badge for MPL-2.0. The technology list names Vue, Bootstrap, jQuery, Thymeleaf, Spring Data JPA, Spring Boot Mail, WebJars, MySQL and Tomcat, with Redis listed but struck through, which reads as a dependency that was tried and then dropped.

The topic tags fill in the rest: spring, spring-boot, spring-data-jpa, jpa, spring-session, thymeleaf and webjars, plus docker. The presence of spring-session suggests server side session handling rather than stateless tokens, which is consistent with a server rendered Thymeleaf application where the server also holds the login state.

One licence detail needs attention. The repository has no LICENSE file among its top level entries, which are.gitignore, README.md, app/, docker-compose.yml, mysql/ and nginx/, and the licence field for the project is reported as unknown. The README badge claims MPL-2.0. A badge is an assertion in a README, not a licence grant, so if the terms matter to you, that is a question to settle with the maintainers rather than from the badge.

Docker Compose wires nginx, MySQL and the app together

The deployment path is Docker Compose, and the README recommends it, requiring Docker and Docker Compose to be installed first.

The compose file has three services. The nginx service runs the nginx:1.13 image with restart always, publishes ports 80 and 443, mounts the ./nginx/conf.d directory into /etc/nginx/conf.d and maps /tmp/logs to /var/log/nginx, so the nginx configuration lives in the repository rather than in the image.

The mysql service is built from a local ./mysql directory rather than pulled from a registry, and it carries the environment for the database name, the root password, the root host and the time zone, with the port published as 3306:3306 and the data directory mapped to ./mysql_data. The root host is set to a percent sign, which means the root account is permitted to connect from any host, and the root password is the word root. That combination is fine for a laptop and wrong for a machine with a routable address, which is worth checking before the port mapping does any damage.

The app service is also built locally, from ./app, with the working directory set to /app, the source directory bind mounted over the container's /app, the local Maven repository mounted from ~/.m2, and logs going to /tmp/logs. Its command is:

sh
mvn clean spring-boot:run -Drun.profiles=docker

So the app container compiles and runs the Spring Boot app at startup rather than running a prebuilt jar, with the docker profile active. The service exposes port 8080 internally and depends on both nginx and mysql. The result is a self contained stack where nginx terminates the traffic and proxies to the app.

The manual deploy path, and its version drift

The README also gives a non-Docker route, and it contains an inconsistency worth catching before you follow it.

The download step fetches a specific release archive:

sh
wget https://github.com/cloudfavorites/favorites-web/archive/favorites-1.3.0.zip

but the following commands refer to a different version. The unzip step uses favorites-1.1.1.zip and the directory change uses favorites-web-favorites-1.1.1. So the file you download and the file you unpack do not have the same name, and if you follow the commands literally the unzip will fail on the filename.

The configuration step is the one that matters for a real deployment. You edit the Docker profile properties file:

sh
vi app/src/main/resources/application-docker.properties

and set the base path to the address of your server:

sh
favorites.base.path=http://xx.xxx.xx.xx/

The README notes that this address is the deployment server's address, and it is the value the application uses to build links, so getting it wrong produces a site that works but links to the wrong place. After the configuration is done, the stack starts with:

sh
[root@~]# docker-compose up -d

The expected output shows three containers being created, the nginx container, the MySQL container and the app container, and the README then says to open the configured address in a browser to see the home page.

Release history stops in 2018 while the branch keeps moving

The tagged releases are all from the middle of 2018: favorites 1.3.0 on 2018-07-13, favorites 1.2.1 on 2018-05-17 and favorites 1.2.0 on 2018-05-09. The last push to the master branch was on 2026-10-13, so something is being committed to the branch even though no new release has been tagged in eight years.

That gap has a practical consequence. If you deploy from the release archive, you are running 2018 code, which means JDK 8, Spring Boot 2.0 and MySQL 5.6 as pinned by the badges, and the MySQL 5.6 requirement is the one that will hurt most, since MySQL 5.6 reached end of life years ago. If you deploy from the branch instead, you get eight years of unreleased commits on top of that same stack, and no changelog to tell you what changed. The README does not discuss either choice.

The project also points at a Gitee mirror, a Chinese documentation site, a wiki, and an issues page plus an email address for discussion, and it closes with a note pointing at a WeChat public account and a group chat. The community arrangement is entirely Chinese language, which is a factor to weigh if you are deploying this outside that ecosystem, since the answers to your questions will not be in the repository.

The screenshots in the README, taken in 2016, show the home page, the registration page, the main page and the collection page, and the animation that demonstrates the import tool is linked as a separate image.

Editorial conclusion

Adopt Favorites Web if you want a bookmarking service on your own server, because it gives you import from the browser, export for backup, accounts, and a public page where other users can browse what you have collected. Do not adopt it expecting an actively developed project, since the tagged releases stop at favorites 1.3.0 in July 2018 even though the branch was pushed to more recently, and the stack is Spring Boot 2, Thymeleaf 3 and MySQL 5.6 with JDK 8. Before you deploy, edit the base path in application-docker.properties to your own address, decide whether the compose file's published MySQL port should be reachable from outside, and check the licence yourself, since the repository has no licence file even though the README badge claims MPL-2.0.

Frequently asked questions

How do I deploy Favorites Web?

The README recommends Docker, with Docker and Docker Compose installed. Download the release archive, edit app/src/main/resources/application-docker.properties to set favorites.base.path to your server address, then start the stack with `docker-compose up -d`. The compose file runs nginx from the nginx:1.13 image and builds MySQL and the app from local directories, proxying traffic through nginx on ports 80 and 443.

What technologies does Favorites Web use?

The README lists Spring Boot 2.0, Thymeleaf 3.0, MySQL 5.6, JDK 1.8 and Maven 3.5.0, with Vue, Bootstrap, jQuery, Spring Data JPA, Spring Boot Mail, WebJars and Tomcat, and Redis listed but struck through. The topic tags also name spring-session and docker.

Can I import my browser bookmarks into Favorites Web?

Yes. The project states that as an open source application it lets users import their browser bookmarks into the site, and that collected articles can be exported for backup. The README links a small animated image demonstrating the import tool.

Is Favorites Web still maintained?

The tagged releases stop at favorites 1.3.0 on 2018-07-13, with 1.2.1 and 1.2.0 earlier that year, although the master branch was pushed to on 2026-10-13. There is no newer release archive, so the pinned JDK 8, Spring Boot 2.0 and MySQL 5.6 versions in the README badges still describe the released build.

Official sources

  1. cloudfavorites/favorites-web on GitHub
  2. Issues
  3. Project website
  4. README
  5. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/cloudfavorites-favorites-web.svg)](https://hysenlabs.com/projects/cloudfavorites-favorites-web)

Was this useful?