Git Product home page Git Product logo

short_links's Introduction

Aleksey Vanchikov

Short links server

Небольшой проект, который возможно в дальнейшем перерастет в статус pet-проекта.

  • Генератор короткий ссылок
  • ✨Magic✨

Постановка задачи

Нужно разработать сервис формирования и хранения сокращенных ссылок, аналог TinyURL. На главной странице находится форма для ввода полноценной ссылки и кнопка, по нажатию на которую происходит создание сокращенной ссылки и отображение ее пользователю.

Для решения этой задачи предлагается использовать flask/django фреймворки, для хранения ссылок redis. Решение должно быть развернуто в контейнерах docker с помощью docker-compose. Код проекта должен быть покрыт тестами более чем на 85 процентов.

Требования

  • Разработка сервиса формирования и хранения коротких сслылок
  • На главной странице находится форма для ввода и вывода коротких ссылок
  • Решение реализовано на Django, хранение ссылок redis
  • Решение должно быть построено на контейнерах docker с использованием docker-compose
  • Код проекта должен быть покрыт тестами

Проектирование

1 день = 8 часов

Разработка состоит из следующих этапов:

  • Инициация проекта - 1 день В инициацию проекта входят настройка и развертываение окружения и контейнеров.
  • Описание бэкэнд-составляющей проекта - 1 день В нее входят - реализация в коде следующих задач:
    • модели базы данных
    • сериализаторы
    • views
    • подготовка для фронтенд составляющей
  • Работа с фронтенд-составляющей проекта - 1 день В нее входят:
    • Верстка основной страницы - насколько меня хватит
    • Настройка и привязка к станице jQuery скриатов
    • Привязка к бэкэнду

The overriding design goal for Markdown's formatting syntax is to make it as readable as possible. The idea is that a Markdown-formatted document should be publishable as-is, as plain text, without looking like it's been marked up with tags or formatting instructions.

This text you see here is *actually- written in Markdown! To get a feel for Markdown's syntax, type some text into the left window and watch the results in the right.

Tech

Dillinger uses a number of open source projects to work properly:

And of course Dillinger itself is open source with a public repository on GitHub.

Installation

Dillinger requires Node.js v10+ to run.

Install the dependencies and devDependencies and start the server.

cd dillinger
npm i
node app

For production environments...

npm install --production
NODE_ENV=production node app

Plugins

Dillinger is currently extended with the following plugins. Instructions on how to use them in your own application are linked below.

Plugin README
Dropbox plugins/dropbox/README.md
GitHub plugins/github/README.md
Google Drive plugins/googledrive/README.md
OneDrive plugins/onedrive/README.md
Medium plugins/medium/README.md
Google Analytics plugins/googleanalytics/README.md

Development

Want to contribute? Great!

Dillinger uses Gulp + Webpack for fast developing. Make a change in your file and instantaneously see your updates!

Open your favorite Terminal and run these commands.

First Tab:

node app

Second Tab:

gulp watch

(optional) Third:

karma test

Building for source

For production release:

gulp build --prod

Generating pre-built zip archives for distribution:

gulp build dist --prod

Docker

Dillinger is very easy to install and deploy in a Docker container.

By default, the Docker will expose port 8080, so change this within the Dockerfile if necessary. When ready, simply use the Dockerfile to build the image.

cd dillinger
docker build -t <youruser>/dillinger:${package.json.version} .

This will create the dillinger image and pull in the necessary dependencies. Be sure to swap out ${package.json.version} with the actual version of Dillinger.

Once done, run the Docker image and map the port to whatever you wish on your host. In this example, we simply map port 8000 of the host to port 8080 of the Docker (or whatever port was exposed in the Dockerfile):

docker run -d -p 8000:8080 --restart=always --cap-add=SYS_ADMIN --name=dillinger <youruser>/dillinger:${package.json.version}

Note: --capt-add=SYS-ADMIN is required for PDF rendering.

Verify the deployment by navigating to your server address in your preferred browser.

127.0.0.1:8000

N|Solid - My contacts

short_links's People

Contributors

onechi avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.