All Projects → dailybruin → meow

dailybruin / meow

Licence: AGPL-3.0 license
Daily Bruin's homemade social media manager

Programming Languages

python
139335 projects - #7 most used programming language
javascript
184084 projects - #8 most used programming language
CSS
56736 projects
shell
77523 projects
HTML
75241 projects
Dockerfile
14818 projects
Procfile
174 projects

Projects that are alternatives of or similar to meow

Hack The Media
This repo collects examples of intentional and unintentional hacks of media sources
Stars: ✭ 1,194 (+2742.86%)
Mutual labels:  social-media, journalism
Budibase
Budibase is an open-source low-code platform for creating internal apps in minutes. Supports PostgreSQL, MySQL, MSSQL, MongoDB, Rest API, Docker, K8s 🚀
Stars: ✭ 8,071 (+19116.67%)
Mutual labels:  internal-tools
Laravel Ecommerce
Laravel open source e-commerce system.
Stars: ✭ 163 (+288.1%)
Mutual labels:  social-media
Mosint
An automated e-mail OSINT tool
Stars: ✭ 184 (+338.1%)
Mutual labels:  social-media
Firestore Cloud Functions Typescript
Firebase cloud functions in typescript with Firestore. Using a social network as example
Stars: ✭ 171 (+307.14%)
Mutual labels:  social-media
Zhihu Analysis Python
Social Network Analysis of Zhihu with Python
Stars: ✭ 215 (+411.9%)
Mutual labels:  social-media
Share Bar
A pure JS plugin to generate a share bar for social media, used by Globo.com.
Stars: ✭ 158 (+276.19%)
Mutual labels:  social-media
los-angeles-police-killings-data
The Los Angeles Times' database of people killed by local police in Los Angeles County.
Stars: ✭ 14 (-66.67%)
Mutual labels:  journalism
basetool
Open-source internal tool framework. 💪 Empower your team and collaborators to view and manage the data you already own in a nice easy-to-use protected tool. Basetool helps you have a better handle on your data in a collaborative way so you can focus on moving your business forward.
Stars: ✭ 160 (+280.95%)
Mutual labels:  internal-tools
Free Gophers Pack
✨ This pack of 100+ gopher pictures and elements will help you to build own design of almost anything related to Go Programming Language: presentations, posts in blogs or social media, courses, videos and many, many more.
Stars: ✭ 2,343 (+5478.57%)
Mutual labels:  social-media
Awesome Startup Tools List
List of all tools (apps, services) that startups should use.
Stars: ✭ 188 (+347.62%)
Mutual labels:  social-media
Intrinsic Image Popularity
The pytorch code of the paper "Intrinsic Image Popularity Assessment"
Stars: ✭ 179 (+326.19%)
Mutual labels:  social-media
Socialview
Android TextView and EditText with hashtag, mention, and hyperlink support
Stars: ✭ 217 (+416.67%)
Mutual labels:  social-media
Shareable Links
A curated list of shareable social media links
Stars: ✭ 168 (+300%)
Mutual labels:  social-media
Appsmith
Low code project to build admin panels, internal tools, and dashboards. Integrates with 15+ databases and any API.
Stars: ✭ 12,079 (+28659.52%)
Mutual labels:  internal-tools
Socialblocklists
Blocklists to block the communication to social networking sites and privacy harming services
Stars: ✭ 161 (+283.33%)
Mutual labels:  social-media
Social Media Data Scripts
Stars: ✭ 188 (+347.62%)
Mutual labels:  social-media
Graphjs
A set of widgets for a meaningfully social web.
Stars: ✭ 212 (+404.76%)
Mutual labels:  social-media
fabrica-collaborative-editing
Plugin to make WordPress more Wiki-like by allowing more than one person to edit the same Post, Page, or Custom Post Type at the same time. When there are conflicting edits, it helps users to view, compare, and merge changes before saving.
Stars: ✭ 19 (-54.76%)
Mutual labels:  journalism
SocialMedia-App
A fully functional social media app built with flutter with multiple features
Stars: ✭ 646 (+1438.1%)
Mutual labels:  social-media

meow Updates

Daily Bruin's Twitter and Facebook post scheduler

Technologies Used

  • Docker is our way of putting the code for meow in "containers" so you can run it the same on any machine.

Frontend

  • React is a popular JavaScript library for building user interfaces.
  • Redux is a library for maintaining a global state across the entire frontend.

Backend

  • Django is a Web framework that makes working with databases easier!
  • Celery is a task scheduler that runs certain "tasks" at certain intervals.

Structure

.
├── Dockerfile
├── LICENSE
├── Procfile
├── Procfile.dev
├── docker-compose.yml
├── entrypoint.sh
├── meow
│   ├── manage.py
│   ├── frontend
│       └── src
│   ├── meow
│       └── settings.py
│   ├── scheduler
│   ├── ... all other django apps
│   ├── static
│   └── templates
├── readme.md
└── requirements.txt

Getting Started

0. Grab this repo

Clone the repository.

git clone https://github.com/daily-bruin/meow.git
cd meow

1. Shortcut: init-script

To make this whole process easier, we have a script which will run all the steps except npm run watch. Note: the script may pause at certain points to prompt you for secrets or environment variables. If you are part of Daily Bruin, ask the Internal Tools Editor for these values since we have accounts for those set up already.

./init_script.sh

If you get an error saying cannot connect to docker daemon, you may need to run docker commands with sudo. Try calling the sudo version of the init_script.

./sudo_init_script.sh # Only run if the ./init_script.sh did not work.

Once you run this, just run docker-compose up in one terminal tab and npm run watch in another. Then go to localhost:5000 and you should see 1 of several random cats pics :D (and the login page). Now you are done and you can skip all the other steps.

2. Compiling the frontend

Since the redesign for meow is done with React, we need a way to compiled all that code into something that Django can recognize and (more importantly) serve to our user!

First, increase max inotify watchers.

Then, open up a separate Terminal run the command:

npm run watch

npm run watch will recompile the code everytime you make a change! If you don't like this, you can also run npm run build every time you change your code.

3. Check it out!

Point your browser to localhost:5000. Login with your Daily Bruin slack.

4. Connect Social Media Accounts

Navigate to localhost:5000/manage/, and click on "Twitter/Facebook accounts". Make sure you're an admin for the Facebook page you want to connect to and click "Connect with Facebook"! Follow the steps on when you're redirected to Facebook. At the end, you will be prompted to choose a section and a page. Click on the dropdown for "Choose a section" and click on the section Test. Then click on the dropdown for "Choose a page" and click on the Facebook page you want to connect to. Once you click "Connect," you can send posts to Facebook with meow!

The next step is to connect your Twitter account to meow. Head back to localhost:5000/manage/. Ensure that you're logged in to the Twitter account you wish to post to or else you might end up posting to your personal Twitter! Click "Connect with Twitter" and then "Authorize app." When prompted to "Choose a section," select Test. After clicking "Connect," you can begin sending meow posts Twitter.

5. Send a Post!

At localhost:5000, you can begin sending meows. Click "New" in the top right, and fill in the fields. A slug is a relatively unique string used in the newsroom to identify stories in production (e.g., a story about cats could be called news.breaking.meowisdown).

6. Create a Superuser

Superusers have access to Django's admin side. The admin side allows you to access most of the database through a nice UI.

docker-compose run web meow/manage.py createsuperuser

You can use any email and password. For example, you can set username=admin, email=[email protected], and password=admin123.

Then navigate to localhost:5000/admin/. THE TRAILING SLASH IS REQUIRED. Login with the username and password from the previous step and now you can access the admin side.

Adding A Database Field

In Django, if you want to add fields to your database, you would add a field to the corresponding model (each of which represents a table) in models.py. Once you finish adding your attributes, you will need to run makemigrations so django will create code to update the underlying database table headers appropriately.

docker-compose run web meow/manage.py makemigrations # django makes a script to update database headers
docker-compose run web meow/manage.py migrate        # django runs all those scripts it made
docker-compose up --build

Django Shell

The manage.py shell allows you to run any python code in an interactive shell!

In order to access this shell, run docker-compose run web ./meow/manage.py shell. Then a prompt like this should show:

Python 3.6.9 (default, Nov 15 2019, 03:26:27)
[GCC 8.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>>

Useful Examples

  1. Create SMPost (or an instance of any model)
>>> from scheduler.models import *
>>> p =SMPost.objects.create(slug="test")
>>> print(p)
test
>>>
  1. Get all SMPosts (or an instance of any model)
>>> from scheduler.models import *
>>> posts =SMPost.objects.all()
>>> print(posts)
<QuerySet [<SMPost: test>, <SMPost: test>, <SMPost: a>, <SMPost: b>, <SMPost: test>]>
  1. Find and delete a particular SMPosts (or an instance of any model)
>>> from scheduler.models import *
>>> post = SMPost.objects.get(id=number_in_the_url_in_the_edit_meow_page)
>>> post.delete()

Linting

We use a combination of eslint and prettier for our linting and code formatting.

With a few exceptions, we follow the Airbnb JavaScript guide.

License

Meow is released under GNU AGPLv3. See LICENSE for more details.

Though not required, if you use this software or would like to contribute to its development, please let us know by emailing us at [email protected]. We'd love to know what it's being used for, especially if it's at another college newspaper.

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].