mirror of https://github.com/laurent22/joplin.git
405 lines
20 KiB
HTML
405 lines
20 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
|
|
<!--
|
|
|
|
!!! WARNING !!!
|
|
|
|
This file was auto-generated from readme/gsoc2022/ideas.md and any manual change
|
|
made to it will be overwritten. To make a change to this file please modify
|
|
the source Markdown file:
|
|
|
|
https://github.com/laurent22/joplin/blob/dev/readme/gsoc2022/ideas.md
|
|
|
|
-->
|
|
|
|
<head>
|
|
<!-- Donate button A/B testing -->
|
|
|
|
<!--
|
|
<script async src="https://www.googleoptimize.com/optimize.js?id=OPT-PW3ZPK3"></script>
|
|
--> <meta
|
|
charset="utf-8"
|
|
http-equiv="X-UA-Compatible"
|
|
content="IE=edge,chrome=1"
|
|
/>
|
|
<link rel="icon" href="/images/favicon.png" />
|
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
<meta name="theme-color" content="#000000" />
|
|
<meta name="description" content="Joplin, the open source note-taking application" />
|
|
<link
|
|
rel="stylesheet"
|
|
href="/css/bootstrap5.0.2.min.css"
|
|
as="style"
|
|
/>
|
|
<link rel="stylesheet" href="/css/fontawesome-all.min.css?h=ecd507b3125edc4d2a03aa6ae5d07da9">
|
|
<link
|
|
href="https://fonts.googleapis.com/css2?family=Montserrat:wght@400;500;600;700&display=swap"
|
|
rel="stylesheet"
|
|
as="style"
|
|
media="all"
|
|
onload="this.media='all'; this.onload = null"
|
|
/>
|
|
<link rel="stylesheet" href="/css/site.css?h=679184ffd12e4ab841f24c0858c6ed45" as="style" />
|
|
<title>GSoC 2022 Ideas | Joplin</title>
|
|
|
|
<script
|
|
src="/js/jquery-3.6.0.min.js"
|
|
rel="preload"
|
|
as="script"
|
|
></script>
|
|
</head>
|
|
<body class="website-env-prod">
|
|
<div class="container-fluid generic-template -page" id="main-container">
|
|
|
|
<div class=" navbar-main white-bg" id="nav-section">
|
|
<div class="container">
|
|
<div class="row">
|
|
<div class="col-3">
|
|
<a href="/">
|
|
<img
|
|
src="/images/logo-text-blue.svg"
|
|
alt=""
|
|
id="top-logo"
|
|
width="180"
|
|
/>
|
|
</a>
|
|
</div>
|
|
<div class="col-9 text-right d-none d-md-block">
|
|
<a href="/news/" class="fw500">What's New</a>
|
|
<a href="/help/" class="fw500">Help</a>
|
|
<a href="https://discourse.joplinapp.org/" class="fw500">Forum</a>
|
|
<a href="/plans/" class="button-link btn-trans plans-button">Joplin Cloud</a><a class="button-link btn-blue sponsor-button" href="/donate">
|
|
<i class="fas fa-heart heart-full"></i><i class="far fa-heart heart-line"></i> Support us
|
|
</a> </div>
|
|
<div class="col-9 text-right d-block d-md-none navbar-mobile-content">
|
|
<a class="button-link btn-blue sponsor-button" href="/donate">
|
|
<i class="fas fa-heart heart-full"></i><i class="far fa-heart heart-line"></i> Support us
|
|
</a>
|
|
<span class="pointer"
|
|
><img
|
|
src="/images/mobile-menu-black-open-icon.png"
|
|
id="open-menu-mobile"
|
|
alt=""
|
|
/></span>
|
|
|
|
|
|
<div id="menu-mobile">
|
|
<div>
|
|
<div class="text-right">
|
|
<img
|
|
src="/images/close-icon.png"
|
|
alt=""
|
|
class="pointer"
|
|
id="close-menu-mobile"
|
|
/>
|
|
</div>
|
|
|
|
<div class="text-center menu-mobile-top">
|
|
<a href="/news/" class="fw500 mobile-menu-link">What's New</a>
|
|
<a href="/help/" class="fw500 mobile-menu-link">Help</a>
|
|
<a href="https://discourse.joplinapp.org/" class="fw500 mobile-menu-link">Forum</a>
|
|
</div>
|
|
|
|
<div class="menu-mobile-buttons">
|
|
<a href="/plans/" class="button-link btn-trans plans-button">Joplin Cloud</a><a class="button-link btn-blue sponsor-button" href="/donate">
|
|
<i class="fas fa-heart heart-full"></i><i class="far fa-heart heart-line"></i> Support us
|
|
</a> </div>
|
|
</div>
|
|
|
|
<div id="toc-mobile"><div><ul>
|
|
<li>
|
|
<p>Applications</p>
|
|
<ul>
|
|
<li><a href="/desktop/">Desktop application</a></li>
|
|
<li><a href="/mobile/">Mobile applications</a></li>
|
|
<li><a href="/terminal/">Terminal application</a></li>
|
|
<li><a href="/clipper/">Web Clipper</a></li>
|
|
</ul>
|
|
</li>
|
|
<li>
|
|
<p>Support</p>
|
|
<ul>
|
|
<li><a href="https://discourse.joplinapp.org">Joplin Forum</a></li>
|
|
<li><a href="/markdown/">Markdown Guide</a></li>
|
|
<li><a href="/e2ee/">How to enable end-to-end encryption</a></li>
|
|
<li><a href="/conflict/">What is a conflict?</a></li>
|
|
<li><a href="/debugging/">How to enable debug mode</a></li>
|
|
<li><a href="/rich_text_editor/">About the Rich Text editor limitations</a></li>
|
|
<li><a href="/external_links/">External links</a></li>
|
|
<li><a href="/faq/">FAQ</a></li>
|
|
</ul>
|
|
</li>
|
|
<li>
|
|
<p>Joplin Cloud</p>
|
|
<ul>
|
|
<li><a href="/share_notebook/">Sharing a notebook</a></li>
|
|
<li><a href="/publish_note/">Publishing a note</a></li>
|
|
</ul>
|
|
</li>
|
|
<li>
|
|
<p>Joplin API - Get Started</p>
|
|
<ul>
|
|
<li><a href="/api/overview/">Joplin API Overview</a></li>
|
|
<li><a href="/api/get_started/plugins/">Plugin development</a></li>
|
|
<li><a href="/api/tutorials/toc_plugin/">Plugin tutorial</a></li>
|
|
</ul>
|
|
</li>
|
|
<li>
|
|
<p>Joplin API - References</p>
|
|
<ul>
|
|
<li><a href="https://joplinapp.org/api/references/plugin_api/classes/joplin.html">Plugin API</a></li>
|
|
<li><a href="/api/references/rest_api/">Data API</a></li>
|
|
<li><a href="/api/references/plugin_manifest/">Plugin manifest</a></li>
|
|
<li><a href="/api/references/plugin_loading_rules/">Plugin loading rules</a></li>
|
|
<li><a href="/api/references/plugin_theming/">Plugin theming</a></li>
|
|
</ul>
|
|
</li>
|
|
<li>
|
|
<p>Development</p>
|
|
<ul>
|
|
<li><a href="https://github.com/laurent22/joplin/blob/dev/BUILD.md">How to build the apps</a></li>
|
|
<li><a href="/spec/e2ee/">End-to-end encryption spec</a></li>
|
|
<li><a href="/spec/history/">Note History spec</a></li>
|
|
<li><a href="/spec/sync_lock/">Sync Lock spec</a></li>
|
|
<li><a href="/spec/plugins/">Plugin Architecture spec</a></li>
|
|
<li><a href="/spec/search_sorting/">Search Sorting spec</a></li>
|
|
<li><a href="/spec/server_file_url_format/">Server: File URL Format</a></li>
|
|
<li><a href="/spec/server_delta_sync/">Server: Delta Sync</a></li>
|
|
<li><a href="/spec/server_sharing/">Server: Sharing</a></li>
|
|
</ul>
|
|
</li>
|
|
<li>
|
|
<p>Google Summer of Code 2021</p>
|
|
<ul>
|
|
<li><a href="/gsoc2021/index/">Google Summer of Code 2021</a></li>
|
|
<li><a href="/gsoc2021/pull_request_guidelines/">How to submit a GSoC pull request</a></li>
|
|
<li><a href="/gsoc2021/ideas/">Project Ideas</a></li>
|
|
</ul>
|
|
</li>
|
|
<li>
|
|
<p>About</p>
|
|
<ul>
|
|
<li><a href="/changelog/">Changelog (Desktop App)</a></li>
|
|
<li><a href="/changelog_cli/">Changelog (CLI App)</a></li>
|
|
<li><a href="/changelog_server/">Changelog (Server)</a></li>
|
|
<li><a href="/stats/">Stats</a></li>
|
|
<li><a href="/donate/">Donate</a></li>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
</div></div>
|
|
|
|
<div>
|
|
<p class="light-blue mobile-menu-link-bottom text-center">
|
|
Copyright © 2016-2021 Laurent Cozic
|
|
<br/>
|
|
<a href="/privacy/" class="fw500">Privacy Policy</a>
|
|
</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="help-page-container page-ideas">
|
|
<div class="container">
|
|
<div class="row content-wrapper">
|
|
<div id="toc"><div><ul>
|
|
<li>
|
|
<p>Applications</p>
|
|
<ul>
|
|
<li><a href="/desktop/">Desktop application</a></li>
|
|
<li><a href="/mobile/">Mobile applications</a></li>
|
|
<li><a href="/terminal/">Terminal application</a></li>
|
|
<li><a href="/clipper/">Web Clipper</a></li>
|
|
</ul>
|
|
</li>
|
|
<li>
|
|
<p>Support</p>
|
|
<ul>
|
|
<li><a href="https://discourse.joplinapp.org">Joplin Forum</a></li>
|
|
<li><a href="/markdown/">Markdown Guide</a></li>
|
|
<li><a href="/e2ee/">How to enable end-to-end encryption</a></li>
|
|
<li><a href="/conflict/">What is a conflict?</a></li>
|
|
<li><a href="/debugging/">How to enable debug mode</a></li>
|
|
<li><a href="/rich_text_editor/">About the Rich Text editor limitations</a></li>
|
|
<li><a href="/external_links/">External links</a></li>
|
|
<li><a href="/faq/">FAQ</a></li>
|
|
</ul>
|
|
</li>
|
|
<li>
|
|
<p>Joplin Cloud</p>
|
|
<ul>
|
|
<li><a href="/share_notebook/">Sharing a notebook</a></li>
|
|
<li><a href="/publish_note/">Publishing a note</a></li>
|
|
</ul>
|
|
</li>
|
|
<li>
|
|
<p>Joplin API - Get Started</p>
|
|
<ul>
|
|
<li><a href="/api/overview/">Joplin API Overview</a></li>
|
|
<li><a href="/api/get_started/plugins/">Plugin development</a></li>
|
|
<li><a href="/api/tutorials/toc_plugin/">Plugin tutorial</a></li>
|
|
</ul>
|
|
</li>
|
|
<li>
|
|
<p>Joplin API - References</p>
|
|
<ul>
|
|
<li><a href="https://joplinapp.org/api/references/plugin_api/classes/joplin.html">Plugin API</a></li>
|
|
<li><a href="/api/references/rest_api/">Data API</a></li>
|
|
<li><a href="/api/references/plugin_manifest/">Plugin manifest</a></li>
|
|
<li><a href="/api/references/plugin_loading_rules/">Plugin loading rules</a></li>
|
|
<li><a href="/api/references/plugin_theming/">Plugin theming</a></li>
|
|
</ul>
|
|
</li>
|
|
<li>
|
|
<p>Development</p>
|
|
<ul>
|
|
<li><a href="https://github.com/laurent22/joplin/blob/dev/BUILD.md">How to build the apps</a></li>
|
|
<li><a href="/spec/e2ee/">End-to-end encryption spec</a></li>
|
|
<li><a href="/spec/history/">Note History spec</a></li>
|
|
<li><a href="/spec/sync_lock/">Sync Lock spec</a></li>
|
|
<li><a href="/spec/plugins/">Plugin Architecture spec</a></li>
|
|
<li><a href="/spec/search_sorting/">Search Sorting spec</a></li>
|
|
<li><a href="/spec/server_file_url_format/">Server: File URL Format</a></li>
|
|
<li><a href="/spec/server_delta_sync/">Server: Delta Sync</a></li>
|
|
<li><a href="/spec/server_sharing/">Server: Sharing</a></li>
|
|
</ul>
|
|
</li>
|
|
<li>
|
|
<p>Google Summer of Code 2021</p>
|
|
<ul>
|
|
<li><a href="/gsoc2021/index/">Google Summer of Code 2021</a></li>
|
|
<li><a href="/gsoc2021/pull_request_guidelines/">How to submit a GSoC pull request</a></li>
|
|
<li><a href="/gsoc2021/ideas/">Project Ideas</a></li>
|
|
</ul>
|
|
</li>
|
|
<li>
|
|
<p>About</p>
|
|
<ul>
|
|
<li><a href="/changelog/">Changelog (Desktop App)</a></li>
|
|
<li><a href="/changelog_cli/">Changelog (CLI App)</a></li>
|
|
<li><a href="/changelog_server/">Changelog (Server)</a></li>
|
|
<li><a href="/stats/">Stats</a></li>
|
|
<li><a href="/donate/">Donate</a></li>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
</div></div>
|
|
|
|
<div class="main-content">
|
|
<div class="alert alert-danger alert-env-dev" role="alert">
|
|
Running in prod mode!
|
|
</div>
|
|
<div class="donate-links">
|
|
<p><a href="https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=E8JMYD2LQ8MMA&lc=GB&item_name=Joplin+Development&currency_code=EUR&bn=PP%2dDonationsBF%3abtn_donateCC_LG%2egif%3aNonHosted"><img src="https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/badges/Donate-PayPal-green.svg" alt="Donate using PayPal"></a> <a href="https://github.com/sponsors/laurent22/"><img src="https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/badges/GitHub-Badge.svg" alt="Sponsor on GitHub"></a> <a href="https://www.patreon.com/joplin"><img src="https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/badges/Patreon-Badge.svg" alt="Become a patron"></a> <a href="https://joplinapp.org/donate/#donations"><img src="https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/badges/Donate-IBAN.svg" alt="Donate using IBAN"></a></p>
|
|
</div>
|
|
<h1>GSoC 2022 Ideas<a name="gsoc-2022-ideas" href="#gsoc-2022-ideas" class="heading-anchor">🔗</a></h1>
|
|
<p>2022 is Joplin second round at Google Summer of Code. Detailed information on how to get involved and apply are given in the <a href="https://joplinapp.org/gsoc2022/index/">general Summer of Code introduction</a></p>
|
|
<p><strong>These are all proposals! We are open to new ideas you might have!!</strong> Do you have an awesome idea you want to work on with Joplin but that is not among the ideas below? That's cool. We love that! But please do us a favour: Get in touch with a mentor early on and make sure your project is realistic and within the scope of Joplin. Just make sure your idea is within this year's theme:</p>
|
|
<ul>
|
|
<li><strong>Plugin development</strong> - implementing new features using Joplin's plugin system.</li>
|
|
<li><strong>External desktop applications</strong> - build external Joplin applications by retrieving, creating or modifying notes via the Data API.</li>
|
|
<li><strong>External server applications</strong> - leverage the Joplin Server API to provide online features to Joplin users.</li>
|
|
</ul>
|
|
<h1>Information for Students<a name="information-for-students" href="#information-for-students" class="heading-anchor">🔗</a></h1>
|
|
<p>These ideas were contributed by our developers and users. They are sometimes vague or incomplete. If you wish to submit a proposal based on these ideas, you are urged to contact the developers and find out more about the particular suggestion you're looking at.</p>
|
|
<p>Becoming accepted as a Google Summer of Code student is quite competitive. Accepted students typically have thoroughly researched the technologies of their proposed project and have been in frequent contact with potential mentors. <strong>Simply copying and pasting an idea here will not work.</strong> On the other hand, creating a completely new idea without first consulting potential mentors rarely works.</p>
|
|
<h1>List of ideas<a name="list-of-ideas" href="#list-of-ideas" class="heading-anchor">🔗</a></h1>
|
|
<h2>1. Plugin system on mobile<a name="1-plugin-system-on-mobile" href="#1-plugin-system-on-mobile" class="heading-anchor">🔗</a></h2>
|
|
<p>The plugin system is currently available on desktop and CLI. We believe it could work on mobile too although some work will have to be done to make the plugin API compatible, as well as add a mechanism to load plugins.</p>
|
|
<p>Expected Outcome: Allow loading and running plugins on mobile</p>
|
|
<p>Difficulty Level: High</p>
|
|
<p>Skills Required: TypeScript, React Native</p>
|
|
<p>Potential Mentor(s): <a href="https://discourse.joplinapp.org/u/PackElend">PackElend</a>, <a href="https://discourse.joplinapp.org/u/roman_r_m">roman_r_m</a>, <a href="https://github.com/laurent22/">laurent22</a></p>
|
|
<h2>2. Seamless desktop application updates<a name="2-seamless-desktop-application-updates" href="#2-seamless-desktop-application-updates" class="heading-anchor">🔗</a></h2>
|
|
<p>The desktop application currently supports automatic updates, however the process is not particularly smooth: the user is presented with a modal dialog, where they need to click "Download" and that opens the default browser to download the file. Then they need to run this file and go through the installer.</p>
|
|
<p>We would like to make this process smoother:</p>
|
|
<ul>
|
|
<li>The installer should be automatically downloaded in the background</li>
|
|
<li>It should then install the app automatically when the next time the app is started</li>
|
|
<li>And this should work at least on Windows and macOS (Linux may be special due to the different distribution methods)</li>
|
|
</ul>
|
|
<p>Difficulty Level: Medium</p>
|
|
<p>Skills Required: TypeScript, React. Some knowledge of Electron and electron-builder.</p>
|
|
<h2>3. Refactor the project documentation<a name="3-refactor-the-project-documentation" href="#3-refactor-the-project-documentation" class="heading-anchor">🔗</a></h2>
|
|
<p>The current documentation (under <a href="https://joplinapp.org/help">joplinapp.org/help</a>) is mainly a giant <a href="http://README.md">README.md</a> file and various smaller Markdown files under /readme. All this is then built into the HTML website by a script.</p>
|
|
<p>We would like to improve this by splitting the main readme into smaller sections, have a new menu that would reorganise the help into various topics, and of course the build script will need to be updated.</p>
|
|
<p>A good part of this project will be about researching how other projects organise their documentation, proposing a way that would work well for Joplin, and discussing your ideas with the mentors and users. This is still a technical project though since you will need to deal with TypeScript, Markdown, HTML and CSS (and any other technology that might help) to build the new documentation.</p>
|
|
<p>Difficulty Level: High</p>
|
|
<p>Skills Required: TypeScript, JavaScript, CSS, HTML, Markdown rendering.</p>
|
|
<h2>4. Implement default plugins on desktop application<a name="4-implement-default-plugins-on-desktop-application" href="#4-implement-default-plugins-on-desktop-application" class="heading-anchor">🔗</a></h2>
|
|
<p>We would like to bundle certain plugins with the desktop application, such as the Backup or Rich Markdown plugin. Some process needs to be implemented so that they are bundled and updated automatically. You'll have to consider how it will work on CI, and across platform. The process should be fault tolerant and retry when something fails.</p>
|
|
<p>Difficulty Level: High</p>
|
|
<p>Skills Required: TypeScript, JavaScript, knowledge of Electron and GitHub Actions.</p>
|
|
<h2>5. Implement a toolbar for the mobile beta code editor<a name="5-implement-a-toolbar-for-the-mobile-beta-code-editor" href="#5-implement-a-toolbar-for-the-mobile-beta-code-editor" class="heading-anchor">🔗</a></h2>
|
|
<p>We would like the Beta code editor to eventually become the main editor, and for that a number of changes need to be made. The main one would be the addition of a toolbar to it, to set the various styles, such as Bold, Bullet list, Header, etc. Additionally there are number of bugs that will have to be fixed to get the editor ready for production - you will find them in the list of issues (under the "high" and "mobile" label).</p>
|
|
<p>Difficulty Level: High</p>
|
|
<p>Skills Required: TypeScript, JavaScript, React Native, React Hooks. You'll also need to learn about CodeMirror 6 if you're not already familiar with it.</p>
|
|
<h2>6. Improve integration of the richtext/WYSIWYG editor<a name="6-improve-integration-of-the-richtext-wysiwyg-editor" href="#6-improve-integration-of-the-richtext-wysiwyg-editor" class="heading-anchor">🔗</a></h2>
|
|
<p>Joplin offers a richtext/WYSIWYG typing experience alongside the Markdown editor but there are a number of areas that could do with improvement when it comes to integration with Joplin as a whole.</p>
|
|
<p>Areas for consideration include increasing compatibility with Joplin-wide keybindings (many are currently static), limiting features of the editor not compatible with markdown formatting, reducing the impact of data changes caused by swapping between editors.<br>
|
|
Also read the document about limitations of the editor: <a href="https://joplinapp.org/rich_text_editor/">https://joplinapp.org/rich_text_editor/</a></p>
|
|
<p>Difficulty level: High</p>
|
|
<p>Skills Required: Typescript, Javascript, CSS, HTML, Markdown rendering. You will also need to learn about TinyMCE if you're not already familiar with it.</p>
|
|
<h1>More info<a name="more-info" href="#more-info" class="heading-anchor">🔗</a></h1>
|
|
<ul>
|
|
<li>Make sure you read the <a href="https://joplinapp.org/gsoc2022/index/">Joplin Google Summer of Code Introduction</a></li>
|
|
<li>To build the application, please read <a href="https://github.com/laurent22/joplin/blob/dev/BUILD.md">BUILD.md</a></li>
|
|
<li>And before creating a pull request, please read the <a href="https://joplinapp.org/gsoc2022/pull_request_guidelines/">pull request guidelines</a></li>
|
|
</ul>
|
|
|
|
<div class="bottom-links">
|
|
<a href="https://github.com/laurent22/joplin/blob/dev/readme/gsoc2022/ideas.md">
|
|
<i class="fab fa-github"></i> Improve this doc
|
|
</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<footer class="darkblue-bg">
|
|
<div class="container">
|
|
<div class="row">
|
|
<div class="col-12 col-md-12 social-links">
|
|
<a href="https://twitter.com/joplinapp" title="Joplin Twitter feed"><i class="fab fa-twitter"></i></a>
|
|
<a href="https://mastodon.social/@joplinapp" title="Joplin Mastodon feed"><i class="fab fa-mastodon"></i></a>
|
|
<a href="https://www.patreon.com/joplin" title="Joplin Patreon"><i class="fab fa-patreon"></i></a>
|
|
<a href="https://discord.gg/VSj7AFHvpq" title="Joplin Discord chat"><i class="fab fa-discord"></i></a>
|
|
<a href="https://www.reddit.com/r/joplinapp/" title="Joplin Subreddit"><i class="fab fa-reddit"></i></a>
|
|
<a href="https://github.com/laurent22/joplin/" title="Joplin GitHub repository"><i class="fab fa-github"></i></a>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="row bottom-links-row">
|
|
<div class="col-12 col-md-6">
|
|
<p class="text-center-sm">Copyright © 2016-2021 Laurent Cozic</p>
|
|
</div>
|
|
<div class="col-12 col-md-6">
|
|
<p class="text-right text-center-sm right-links">
|
|
<span class="footer-right">
|
|
<a href="/privacy/">Privacy Policy</a>
|
|
</span>
|
|
</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</footer> </div>
|
|
|
|
<script src="/js/script.js?h=46b3b58d72c94591621551affbb8c6e3"></script>
|
|
|
|
<script>
|
|
if (window.location.hostname !== 'localhost') {
|
|
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
|
|
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
|
|
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
|
|
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
|
|
ga('create', 'UA-103586105-1', 'auto');
|
|
ga('send', 'pageview');
|
|
}
|
|
</script> </body>
|
|
</html>
|