All Projects → thechangelog → Changelog.com

thechangelog / Changelog.com

Licence: other
Changelog is news and podcast for developers. This is our open source platform.

Programming Languages

elixir
2628 projects
HTML
75241 projects
SCSS
7915 projects
javascript
184084 projects - #8 most used programming language
Makefile
30231 projects
CUE
23 projects

Projects that are alternatives of or similar to Changelog.com

Ueberauth example
Example Phoenix application using Überauth for authentication
Stars: ✭ 180 (-92.35%)
Mutual labels:  phoenix
Grav
Modern, Crazy Fast, Ridiculously Easy and Amazingly Powerful Flat-File CMS powered by PHP, Markdown, Twig, and Symfony
Stars: ✭ 13,067 (+455.1%)
Mutual labels:  cms
Awesome Startup Tools List
List of all tools (apps, services) that startups should use.
Stars: ✭ 188 (-92.01%)
Mutual labels:  cms
Sonatapagebundle
This bundle provides a Site and Page management through container and block services
Stars: ✭ 181 (-92.31%)
Mutual labels:  cms
Flamelink
JavaScript SDK for integrating with Flamelink CMS 🔥
Stars: ✭ 186 (-92.1%)
Mutual labels:  cms
Tipe
🎉 Next Generation API-first CMS for developers. Generate an API-first CMS from a GraphQL schema with offline prototyping and an inline editor
Stars: ✭ 2,157 (-8.37%)
Mutual labels:  cms
Wcms
🖖 Best CMS for landing-page WCMS
Stars: ✭ 179 (-92.4%)
Mutual labels:  cms
Backbee Php
the next generation CMS built on top of Symfony and Doctrine components. Give us a star to support our project :)
Stars: ✭ 192 (-91.84%)
Mutual labels:  cms
Smartstorenet
Open Source ASP.NET MVC Enterprise eCommerce Shopping Cart Solution
Stars: ✭ 2,363 (+0.38%)
Mutual labels:  cms
Contentify
Contentify is an esports CMS based on the PHP framework Laravel
Stars: ✭ 189 (-91.97%)
Mutual labels:  cms
Contao
Contao Open Source CMS
Stars: ✭ 181 (-92.31%)
Mutual labels:  cms
Hackercouch
Hospitality for Hackers
Stars: ✭ 185 (-92.14%)
Mutual labels:  hackers
Phoenix And Elm
Example application using Elixir, Phoenix and Elm
Stars: ✭ 188 (-92.01%)
Mutual labels:  phoenix
Phoenix client
Elixir Phoenix Client for Channels
Stars: ✭ 180 (-92.35%)
Mutual labels:  phoenix
Frappe
Low code web framework for real world applications, in Python and Javascript
Stars: ✭ 3,349 (+42.27%)
Mutual labels:  cms
Api
A high-performance RESTful API layer designed in support of API-first development and COPE. Connects your content to the world
Stars: ✭ 180 (-92.35%)
Mutual labels:  cms
Yii2 Cms
An enterprise application based on yii2 basic template
Stars: ✭ 188 (-92.01%)
Mutual labels:  cms
Cms
Multilingual PHP CMS built with Laravel and bootstrap
Stars: ✭ 2,342 (-0.51%)
Mutual labels:  cms
Quokka
LOOKING FOR NEW MAINTAINER - Quokka is a Content Management System - `docker run --rm -it -p 5000:5000 quokka/quokka`
Stars: ✭ 2,198 (-6.63%)
Mutual labels:  cms
Elefant
Elefant, the refreshingly simple PHP CMS and web framework.
Stars: ✭ 188 (-92.01%)
Mutual labels:  cms

changelog.com CircleCI All Contributors Coverage Status

Read the announcement post!

What is this?

This is the CMS behind changelog.com. It's an Elixir application built with the Phoenix web framework, PostgreSQL, and many other great open source efforts.

Dependencies

  • Elixir 1.12
  • Erlang/OTP 24

Why is it open source?

A few reasons:

  1. We love open source. Our careers (and livelihoods) wouldn't be possible without open source. Keeping it closed just feels wrong.
  2. Phoenix is really great, but it's young enough in its lifecycle that there aren't too many in-production, open source sites for people to refer to as examples or inspiration. We want to throw our hat into that ring and hopefully others will follow.
  3. Changelog is a community of hackers. We know open sourcing the website will lead to good things from y'all (such as bug reports, feature requests, and pull requests).

Should I fork this and use it as a platform?

Probably not. We won't stop you from doing it, but we don't advise it. This is not a general purpose podcasting CMS. It is a CMS that is specific to Changelog and our needs. From the design and layout to the data structures and file hosting, we built this for us. An example of just how custom it is — we literally have our podcast names hardcoded in areas of the code. Yuck.

What is it good for?

If you're building a web application with Phoenix (or aspire to), this is a great place to poke around and see what one looks like when it's all wired together. It's not perfect by any means, but it works. And that's something. We've also been told that it is ridiculously fast.

If you have questions about any of the code, holler @Changelog. Better yet, join the community where we have in-depth discussions about software development, industry trends, and everything else under the sun.

How can I contribute?

Assuming that you have Docker running locally and docker-compose available, all that you have to do is run ./start_dev_stack up in your terminal.

When you run this command for the first time, it will take around 7 minutes to pull all Docker images, build the app image and start the app and db containers. Depending on your internet connection and CPUs used for compiling various artefacts, this can easily take 30 minutes or more. Next time you run this command, since all Docker images will be cached, you can expect all containers to be up and running within 30 seconds.

When all containers are up and running, you should see the following output in your terminal session:

Starting dev_docker_postgres_1   ... done
Starting dev_docker_prometheus_1 ... done
Starting dev_docker_grafana_1    ... done
Starting dev_docker_changelog_app_1 ... done
Attaching to dev_docker_prometheus_1, dev_docker_postgres_1, dev_docker_grafana_1, dev_docker_changelog_app_1
...
grafana_1        | t=2021-02-03T20:53:58+0000 lvl=info msg="Starting Grafana" logger=server version=7.1.3 commit=5723d951af branch=HEAD compiled=2020-08-06T08:44:32+0000
grafana_1        | t=2021-02-03T20:53:58+0000 lvl=info msg="Config loaded from" logger=settings file=/usr/share/grafana/conf/defaults.ini
grafana_1        | t=2021-02-03T20:53:58+0000 lvl=info msg="Config loaded from" logger=settings file=/etc/grafana/grafana.ini
...
prometheus_1     | level=info ts=2021-02-03T20:53:58.108Z caller=main.go:308 msg="No time or size retention was set so using the default time retention" duration=15d
prometheus_1     | level=info ts=2021-02-03T20:53:58.109Z caller=main.go:343 msg="Starting Prometheus" version="(version=2.20.1, branch=HEAD, revision=983ebb4a513302315a8117932ab832815f85e3d2)"
...
postgres_1         | LOG:  autovacuum launcher started
postgres_1         | LOG:  database system is ready to accept connections
...
changelog_app_1    | [info] Running ChangelogWeb.Endpoint with Cowboy using http://0.0.0.0:4000
changelog_app_1    | yarn run v1.6.0
changelog_app_1    | warning package.json: No license field
changelog_app_1    | $ webpack --mode=development --watch-stdin --color
changelog_app_1    |
changelog_app_1    | Webpack is watching the files…
...

You can now access a dev copy of changelog.com locally, at http://localhost:4000 or at https://localhost:4001 if you would like to access the HTTPS version.

When you want to stop all Docker containers, press both CTRL and c keys at the same time (Ctrl+C).

Please remember that we have a product roadmap in mind so open an issue about the feature you'd like to contribute before putting the time in to code it up. We'd hate for you to waste any of your time building something that may ultimately fall on the cutting room floor.

How do I import a db backup locally?

First ensure that:

  • the local changelog containers are stopped, i.e. docker-compose down
  • you have an unarchived db backup file in the priv/db directory, e.g. ./priv/db/changelog-201910-2020-01-16T19.36.05Z

Next, run the following commands:

docker-compose up db
# Run in a separate tab/window
docker-compose exec --user postgres db dropdb changelog_dev
docker-compose exec --user postgres db createdb changelog_dev
docker-compose exec --user postgres db psql --file=/app/priv/db/changelog-201910-2020-01-16T19.36.05Z changelog_dev

Finally, stop the db container by pressing both CTRL and c keys and the same time in the window/tab that you have docker-compose up db running.

You can now start the app normally, all changelog.com content at the time the db backup was taken will be available locally.

How do I get a local copy of all assets?

Run make rsync-image-uploads-to-local in your terminal. There is even make rsync-all-uploads-to-local 😲

Why is Docker for Mac slow?

If you are running changelog.com locally via docker-compose up on a Mac, you might notice that pages take ~1.5s to load:

while true
do
  curl --silent --output /dev/null \
  --write-out '%{http_code} connect:%{time_connect} prepare:%{time_pretransfer} transfer:%{time_starttransfer} total:%{time_total}\n' \
  http://localhost:4000/
done
200 connect:0.004815 prepare:0.004849 transfer:1.488685 total:1.488921
200 connect:0.005061 prepare:0.005089 transfer:1.627873 total:1.628171
200 connect:0.005176 prepare:0.005211 transfer:1.566022 total:1.566123
^C

This is down to Docker for Mac networking integration with the OS, which is still the case in 18.09.0-ce-beta1.

The same test on Arch Linux 2018.10.1 running Docker 18.06.1-ce results in ~0.08s response times (20x faster):

200 connect:0.000569 prepare:0.000602 transfer:0.080425 total:0.080501
200 connect:0.000614 prepare:0.000650 transfer:0.083291 total:0.083407
200 connect:0.000611 prepare:0.000643 transfer:0.081731 total:0.081853
^C

Our thinking is: make it work first, make it right next & make it fast last. Contributions to make changelog.com dev on Docker for Mac fast are welcome! It would be especially interesting to know if ipvlan on macOS makes things better.

Code of Conduct

Contributor Code of Conduct. By participating in this project you agree to abide by its terms.

Contributors

Thanks goes to these wonderful people (emoji key):


Jerod Santo

💻 📖 🚇

Adam Stacoviak

🎨 💻 💵

Cody Peterson

🎨 💻

Jake Stutzman

🎨

Tucker Cowie

💻

Gerhard Lazu

🚇 💻

Xinjiang Shao

📖 💻

Steve Agalloco

💻

David Gasperoni

💻

Nathan Youngman

⚠️

Marco Vito Moscaritolo

💻

0x4e

💻

Andrea Rossi

💻

Tonći Galić

🚇

Jearvon Dharrie

💻

Lee Jarvis


Agusti Fernandez

💻

Len Payne

💻

JoeBew42

💻

Griffin Byatt

💻

Ridge Frederick

💻 🐛

Horst Rutter

🐛

Nick Janetakis

🐛 💻

Ryan Will

🐛 💻

Dennis Reimann

💻

Juan Soto

💻

Jordy Zomer

💻

Kevin Ball

💻

Mat Ryer

💻

Yaw Anokwa

💻

Ilia Choly

💻

Wojtek Mach

💻

Owen Bickford

💻 📝

Lars Wikman

💻

Marcelo Andrade

💻

Jason Axelson

💻

Alexander Koutmos

💻

d-m-u

🐛

Parker Selbert

💻

Haile Lagi

💻

This project follows the all-contributors specification. Contributions of any kind welcome!

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].