Coder Social home page Coder Social logo

fisharebest / webtrees Goto Github PK

View Code? Open in Web Editor NEW
389.0 21.0 288.0 817.96 MB

Online genealogy

Home Page: https://webtrees.net

License: GNU General Public License v3.0

PHP 85.14% JavaScript 0.70% CSS 1.92% HTML 12.24%
webtrees genealogy family-history family-tree gedcom

webtrees's Introduction

Latest version Licence Unit tests codecov Translation status Scrutinizer Code Quality Code Climate StyleCI

webtrees - online collaborative genealogy

Contents

License

  • webtrees: online genealogy
  • Copyright 2022 webtrees development team

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see https://www.gnu.org/licenses/.

Coding styles and standards

webtrees follows the PHP Standards Recommendations.

  • PSR-1 - Basic Coding Standard
  • PSR-2 - Coding Style Guide
  • PSR-4 - Autoloading Standard
  • PSR-6 - Cache
  • PSR-7 - HTTP Message Interface
  • PSR-11 - Container Interface
  • PSR-12 - Extended Coding Style Guide
  • PSR-15 - HTTP Handlers
  • PSR-17 - HTTP Factories

We do not currently use PSR-3 (logging) - but we plan to do so in the future.

For JavaScript, we use semistandard.

Introduction

webtrees is the web's leading online collaborative genealogy application.

  • It works from standard GEDCOM files, and is therefore compatible with every major desktop application.
  • It aims to to be efficient and effective by using the right combination of third-party tools, design techniques and open standards.

webtrees allows you to view and edit your genealogy on your website. It has full editing capabilities, full privacy functions, and supports imedia such as photos and document images. As an online program, it fosters extended family participation and good ancestral recording habits, as it simplifies the process of collaborating with others working on your family lines. Your latest information is always on your web site and available for others to see, defined by viewing rules you set. For more information and to see working demos, visit webtrees.net.

webtrees is Open Source software that has been produced by people from many countries freely donating their time and talents to the project. All service, support, and future development is dependent on the time developers are willing to donate to the project, often at the expense of work, recreation, and family. Beyond the few donations received from users, developers receive no compensation for the time they spend working on the project. There is also no outside source of revenue to support the project. Please consider these circumstances when making support requests and consider volunteering your own time and skills to make the project even stronger and better.

System requirements

To install webtrees, you need:

  • A webserver. Apache, NGINX and IIS are the most common types. To use “Pretty URLs”, you will need to configure URL rewriting"
  • A database. MySQL is recommended, although PostgreSQL, SQL-Server and SQLite can be used. Some features rely on MySQL for collation. Other database might not sort names according to local rules. webtrees uses a prefix for its table names, so you can install several instances of webtrees in the same database.
  • Approximately 100MB of disk space for the application files, plus whatever is needed for your media files, GEDCOM files and database.
  • PHP 7.1 - 7.4. Servers with PHP 5.3 - 7.0 can use webtrees 1.7.
    • PHP should be configured to allow sufficient server resources (memory and execution time) for the size of your system. Typical requirements are:
      • Small systems (500 individuals): 16–32 MB, 10–20 seconds
      • Medium systems (5,000 individuals): 32–64 MB, 20–40 seconds
      • Large systems (50,000 individuals): 64–128 MB, 40–80 seconds

Browser compatibility

webtrees is tested on recent versions of popular browsers such as Edge, Firefox, Chrome, and Safari. Support for other browsers and older versions is on a case-by-case basis.

Installation

  1. Download the .ZIP file for latest stable version from github.com.
  2. Unzip the files and then upload them to an empty folder on your web server.
  3. Open your web browser and type the URL for your webtrees site (for example, https://www.yourserver.com/webtrees into the address bar.
  4. The webtrees setup wizard will start automatically.

Your first task will be to create a family tree.

If you have a GEDCOM file, you can import it into the tree. If not, just start entering your family tree.

There are lots of configuration options. You'll probably want to review the privacy settings first. Don't worry too much about all the other options - the defaults are good for most people. If you get stuck, you can get friendly help and advice from the help forum.

Upgrading

Upgrading webtrees is quick and easy. It is strongly recommended that you upgrade your installation whenever a new version is made available. Even minor webtrees version updates usually contain a significant number of bug fixes as well as interface improvements and program enhancements.

  • Automatic upgrade

    webtrees has an automatic upgrade facility. An administrator upon logging in will receive notification when a new version is available and an option to start the automatic upgrade. If for some reason the automatic upgrade should fail then a manual upgrade should be performed.

  • Manual upgrade

    1. Now would be a good time to make a backup.
    2. Download the latest version of webtrees available from webtrees.net
    3. While you are in the middle of uploading the new files, a visitor to your site would encounter a mixture of new and old files. This could cause unpredictable behavior or errors. To prevent this, create the file data/offline.txt. While this file exists, visitors will see a “site unavailable - come back later” message.
    4. Unzip the .ZIP file, and upload the files to your web server, overwriting the existing files.
    5. Delete the file data/offline.txt.

Note for Macintosh users

Step 4 assumes you are using a copy tool that merges directories rather than replaces them. (Merge is standard behavior on Windows and Linux.) If you use the Macintosh Finder or other similar tool to perform step 3, it will replace your configuration, media and other directories with the empty/default ones from the installation. This would be very bad (but you did take a backup in step 1, didn't you!). Further details and recommendations for suitable tools can be found by searching google.com.

Building and developing

If you want to build webtrees from source, or modify the code, you'll need to install a couple of tools first.

You will need composer to install the PHP dependencies. Then run this command::

  • php composer.phar install

You will need npm to install the Javascript dependencies. Then run the commands:

  • npm install
  • npm run production

You will need to re-run the second of these any time you modify the file webtrees.js.

Gedcom (family tree) files

When you import a family tree (GEDCOM) file in webtrees the data from the file is transferred to the database tables. The file itself remains in the webtrees/data folder and is no longer used or required by webtrees. Any subsequent editing of the webtrees data will not change this file

When or if you change your genealogy data outside of webtrees, it is not necessary to delete your GEDCOM file or database from webtrees and start over. Follow these steps to update a GEDCOM that has already been imported:

  • Go to Control panel -> Manage family trees On the line relating to this particular family tree (GEDCOM) file (or a new one) select IMPORT.
  • Take careful note of the media items option (“If you have created media objects in webtrees, and have edited your data off-line using software that deletes media objects, then tick this box to merge the current media objects with the new GEDCOM.”) In most cases you should leave this box UNCHECKED.
  • Click “SAVE”. webtrees will validate the GEDCOM again before importing. During this process, webtrees copies your entire family tree (GEDCOM file) to a 'chunk' table within your database. Depending on the coding of your file, its file size and the capabilities of your server and the supporting software, this may take some time. No progress bar will show while the data is being copied and should you navigate away from this page, the process is suspended. It will start again when you return to the Family Tree management page.

Security

Security in webtrees means ensuring your site is safe from unwanted intrusions, hacking, or access to data and configuration files. The developers of webtrees regard security as an extremely important part of its development and have made every attempt to ensure your data is safe.

The area most at risk of intrusion would be the /data folder that contains your config.ini.php file, and various temporary files. If you are concerned there may be a risk there is a very simple test you can do: try to fetch the file config.ini.php by typing url_to_your_server/data/config.ini.php in your web browser.

The most likely result is an “access denied” message like this:

Forbidden

You don't have permission to access /data/config.ini.php on this server.

This indicates that the protection built into webtrees is working, and no further action is required.

In the unlikely event you do fetch the file (you will just see a semicolon), then that protection is not working on your site and you should take some further action.

If your server runs PHP in CGI mode, then change the permission of the /data folder to 700 instead of 777. This will block access to the httpd process, while still allowing access to PHP scripts.

This will work for perhaps 99% of all users. Only the remaining 1% should consider the most complex solution, moving the /data folder out of accessible web space. (Note: In many shared hosting environments this is not an option anyway.)

If you do find it necessary, following is an example of the process required:

If your home folder is something like /home/username, and the root folder for your web site is /home/username/public_html, and you have installed webtrees in the public_html/webtrees folder, then you would create a new data folder in your home folder at the same level as your public_html folder, such as /home/username/private/data, and place your GEDCOM (family tree) file there.

Then change the Data folder setting on the Control panel -> Website -> Website preferences page from the default data/ to the new location /home/username/private/data

You will have two data directories:

  • [path to webtrees]/data - just needs to contain config.ini.php
  • /home/username/private/data - contains everything else

Backup

Backups are good. Whatever problem you have, it can always be fixed from a good backup.

To make a backup of webtrees, you need to make a copy of the following

  1. The files in the webtrees/data folder.

  2. The tables in the database. Freely available tools such as phpMyAdmin allow you to do this in one click. Alternatively, You can also make a backup running a mysqldump command (just replace the words [localhost], [username], [password] and [databasename] with your own):

    mysqldump --host=[localhost] -u [username] -p[password] --databases [databasename] > dump_file.sql

    Note that '-p[password]' goes together with no space in between.

Remember that most web hosting services do NOT backup your data, and this is your responsibility.

Restore from backup

To restore a backup on a new server:

  1. Follow the steps in Installation to get a clean new installation.

  2. Replace the data folder with backup copy.

  3. Restore your mysql database using phpmyadmin or running the following command line on your database server using your mysqldumpfile (just replace the words [username], [password] and [databasename] with your own):

    mysql -u [username] -p[password] [database_name] < [dump_file.sql]

  4. Confirm the file data/config.ini.php contains to correct information to connect to the database and update it if needed.

webtrees's People

Contributors

dapohou avatar ddrury avatar fisharebest avatar gudjonsi avatar gustine avatar hrn-webtrees avatar hsarslan avatar jancsi70 avatar jon48 avatar jorgenvvv avatar jpretired avatar justcarmen avatar kiwi3685 avatar ljm42 avatar magicsunday avatar makitso avatar melizaa avatar mic50 avatar mpwt avatar mrqd9 avatar omankoy avatar ric2016 avatar ro-la avatar scrutinizer-auto-fixer avatar thedutchjewel avatar tronsmit avatar tunandras avatar volschin avatar vytux-com avatar wooc avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

webtrees's Issues

tree module css error

Somewhere between v1.5.2 and now a line has gone missing in css which breaks the expanded person boxes on the interactive tree.

It is in modules_v3/tree/css/treeview.css

class tv_out requires white-space: normal; to be reinstated

CKEditor & IE11

You may have noticed, that I recently withdrew my pull request re changing the jQuery modal dialog code, (I've since fixed the problem and will resubmit soon) but in testing I also discovered that CKEditor 4.2.2 isn't compatible with IE11 (to see an example of the problem, using IE11, open the config page of an HTML block and try to enter a link). I've just upgraded to v4.3.2 and that seems to have fixed the problem, however I've done very little testing. Given the introduction of Markdown (and the fact that no-one seems to have noticed the problem), shall I continue testing and submit a pull request?

Improve date parsing when a date contains "BET" but no "AND"

The (invalid) date BET 1780 ANS 1800 triggers the warning Invalid date.

This comes from WT_Date.php

default: $tmp=WT_I18N::translate('Invalid date'); break; // e.g. BET without AND

If we adjust the earlier parsing

} elseif (preg_match('/^(FROM|BET|TO|AND|BEF|AFT|CAL|EST|INT|ABT) (.+)/', $date, $match)) {

to something like

} elseif (preg_match('/^(TO|BEF|AFT|CAL|EST|INT|ABT) (.+)/', $date, $match)) {

then we shouldn't find ourselves in this position. We'll then treat the entire text as a malformed date, and be able to extract a year from it.

This looks like an ideal case for our new test harnesses ;-)

README wrong Version

Under the Headline "INSTALLATION" and Point 1 is still the Version 1.3.2 used.

Relationship with a non-family member

An relationship with a non-family members, e.g. a witness at an marriage results in an empty anchor tag and an unnecessary hyphen inside the individual or family facts.
associates

admin.php performance

On a tree with a large number of users (e.g. 2500), generating the user statistics is very slow, and takes several minutes.

This information can be generated much more efficiently using direct SQL queries rather than API calls for every user.

Advice required on creation of new News / Journal module

Hi Greg,

I've created a new module to replace the current gedcom_news and user_blog modules, it uses another new module (markitup) that uses markdown for editing in a modal dialog, it also adds the ability to assign permitted languages to each article.

So far so good, however I'm finding potential knock on effects and am wondering whether it's worth duplicating some code in the module to keep it self contained or change core code.

Examples ..
There are currently functions getUserNews & getGedcomNews in authentication.php. It is trivial to convert these to a single getNews function which I've done, however library/WT/stats.php calls the old functions (BTW there is a bug here checkout line 3687 of stats.php) which would also be simple to change.

Do I put CSS in the theme or keep it local.

To accommodate the language selection the news table needs an additional column

The more I do the further I diverge from the existing news/journal modules so if there's no chance of you adopting this, I'll stop now.

WT_i18N zend cache usage

Recently noticed that my live host has made Memcache available so I added the following lines to i18N.php init()

if (extension_loaded('memcache')) {
    self::$cache=Zend_Cache::factory('Core', 'Memcached', $cache_options, array());
} elseif (ini_get('apc.enabled')) {
...

This works, however I appreciate that although the memcache extension may be loaded there's no guarantee that a server is listening...

But then I realized that admin_site_clean.php only zaps the cache directory, if APC (or Memcache) are being used then it's not possible for the cache to be cleared, so I added

public static function clearCache() {
    self::$cache->clean(Zend_Cache::CLEANING_MODE_ALL);
}

But logically, admin_site_clean needs restructuring to accomodate this - ideas?

Wrong logic in Controllers' requireManagerLogin method

Hello,
Am I reading something wrong, or is the logic to determine whether a controller (Simple, Page, Ajax) requires manager rights is wrong.

What I understand is :

  • If we are looking the right for the current gedcom and if WT_USER_GEDCOM_ADMIN == false, then throw a 403 header
  • If we are looking at a different gedcom, and if userGedcomAdmin returns true, then throw a 403 header

If I am correct, in the second case, we should throw the error only when userGedcomAdmin is false.
As well, the variable $gedcom_id is not defined (should be $ged_id).

I am not completely sure as well why the condition make a difference between whether $ged_id is the current gedcom or not, as in the end, this is the same logic applied. There might have been some performances differences in the past, but now that the preferences are all retrieved once, there should not be much difference.

Looking at the overall webtrees code, it seems the second case is never used, hence why it has never been spotted, but I need the feature for a module I am developing.

Jonathan

Location of Modernizr script

Hi Greg
WT_Controller_Page has a note (about line 148) to the effect that Modernizr should be loaded in the header, before the CSS. On the Modernizr web page it says "Drop the script tags in the head of your HTML. For best performance, you should have them follow after your stylesheet references." (although it also says "If you don't support IE8 and don't need to worry about FOUC, feel free to include modernizr.js whereever.")

In all the current themes we load it in the body of the document. Does it need moving?

Redundant googlemap settings in wt_module_setting

Hi Greg,

Have just noticed this. The following settings (I think) are now unused
GM_API_KEY
GM_DEFAULT_TOP_VALUE
GM_DISP_COUNT
GM_MAX_NOF_LEVELS
GM_PH_CONTROLS
GM_PH_WHEEL
GM_PRE_POST_MODE_1
GM_PRE_POST_MODE_2
GM_PRE_POST_MODE_3
GM_PRE_POST_MODE_4
GM_PRE_POST_MODE_5
GM_PRE_POST_MODE_6
GM_PRE_POST_MODE_7
GM_PRE_POST_MODE_8
GM_PRE_POST_MODE_9

I determined this list by disabling the googlemap module, dumping & then deleting all its settings and then re-enabled it and saved its settings. The above list were all absent.

Dave

New album tab breaks on sources sub-submenu

I saw you have refactored the album tab. Good job, but this is n't working in cases where there is an item 'sources' in the submenu. The submenu Sources does have another submenu which breaks the layout. See the image below.

You can't see this on the demopage because there are no sources in the submenu there.

14-4-2014 8-36-18

Help text - place names.

The help text for place names suggests using empty segments, such as

, , Utah, USA

We shouldn't promote this. Instead we should promote best practice, such as always including the full hierarchy including the country

v. 1.5.2 Translate error "Old files found"

After installing 1.5.2 on my test server, I get an error on the "Old files found"
screenshot_052
I had tried to run the upgrade wizard, but it failed on file permissions. I completed the install manually, then got this error when I logged in as admin. Did I miss a step or is this a new problem? All my previous upgrades have worked flawlessly.

Names not quite right after CSS mods

After the latest changes to make Names styling by CSS only I noticed the following "regression"

Best shown by images I guess first image being of the latest stable code shows multiple name boxes all aligned

Second image shows current GIT code where boxes float left if multiple names are found.
names 1
names 2

Places redesign

I think the whole system of places in webtrees could use a major redesign.

Major changes to be made:

  • Remove reliance on Google Maps module
  • Allow users to manage places at input-time (vs post-input in admin interface). This should reduce a lot of issues
  • Implement hooks in various places to allow modules to interface with eg: input fields
  • Clean up database schema
  • Improve efficiency

If anyone can think of other major changes they'd like to see made to places, post a comment, and I'll consider adding it to the list.

FAQ Module

FAQ Module has a problem saving changes/new FAQ items

I have managed to work out a fix however having issues creating a 'patch pull request' so can someone add

echo WT_Filter::getCsrf();

to line 161 of the FAQ module.php

Bug with datepicker

Hi,

I have found a small bug in the datepicker.

When I click on a day in the calendar (1.) the right date is inserted in the date form (2.) but in the calendar the wrong day is highlighted and the wrong day is shown in dropdown.

datepicker-bug-1

Also curious: If I choose an day in the dropdown (e.g the 20), the 19 is selected in dropdown, higlighted in calender and inserted in the dateform.

datepicker-bug-2

Potentially loading javascript multiple times on a page

Admittedly this is a bit contrived but ...

Assumes ckeditor is enabled.

Whenever the configure option for a block is clicked, block_edit.php initialises ckeditor, now if instead of saving the pop-up contents, the dialog is cancelled (by clicking on the overlay for example) then the ckeditor javascript remains loaded. Repeating the process results in a another lot of JS being loaded ad nauseum

I've used the sledgehammer method to "solve" it. Using my proposed modal dialog changes, I've added window.location.reload() to modalDialog close - not very satisfactory but it works.

This isn't incorporated in the pull request.

Is Modernizr.load() still causing problems?

SEO-friendly way of excluding some pages from being indexed

The last lines of /includes/session.php, a block starting with:

// Search engines are only allowed to see certain pages.

cause Google to report a massive amount of "Access denied" errors in Webmaster Tools. This in turn will hurt the ranking of Webtrees-based pages. There's a preferred way for keeping search engines from indexing certain pages, and that is by placing:

<meta name="robots" content="noindex">

in the header. The page will not be indexed, but links on it will still be followed, ensuring a better overall indexing coverage by the search engine.

New User class breaks changes log

line 277 of admin_site_change.php calls function select_edit_control() in functions_edit.php with an array of user objects and the following error is thrown 'Catchable fatal error: Object of class WT\User could not be converted to string in ...'

Fatal error: Call to a member function getXref() in /library/WT/Person.php

webtrees v1.4.4

ERROR 8: Undefined variable: person
0 Error occurred on line 1465 of file Person.php in function add_asso_facts
1 called from line 1130 of file Person.php in function add_family_facts
2 called from line 68 of file module.php in function getTabContent
3 called from line 136 of file Individual.php in function ajaxRequest
4 called from line 39 of file individual.php

Notice: Undefined variable: person in /webtrees/library/WT/Person.php on line 1465

Fatal error: Call to a member function getXref() on a non-object in /webtrees/library/WT/Person.php on line 1465

Redundant Javascript ?

Individual.php line 122 there is a function adjHeader() which as far as I can see just adjusts the width of the header Accordion (the name panel). I've experimented by removing this and giving #header_accordion1 a width of 85% which works but seems far to simple - Am I missing something??

Default married name logic missing

When I add a new wife to an individual, the field "Married surname" is automatically filled.
When I add a father to that new wife, and then add a mother (new wife to the newly created father), the field "Married surname" is NOT automatically filled.
Greg: The "default married name" logic appears to be missing for the "add spouse to family" action.
That thread on the forum: http://www.webtrees.net/index.php/fr/forum/help-for-ver-1-5-2/28956-bug-married-name-adding-new-wife-and-new-mother#45828

Local translations for modules

Hi Greg,

We used to be able to do
Zend_Registry::get('Zend_Translate')->addTranslation(new Zend_Translate('gettext', $xlation_file, WT_LOCALE)); in the module constructor to load any local translations

Recent change entitled 'Tidy up I18N + rtl libraries' seems to have broken this - how do we do it now?

Advanced search throws PDOException

http://dev.webtrees.net/demo-dev/search_advanced.php

Advanced Seach => Adding more fields => Select "Spouse note" => Enter something => Submit form

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42S22]: Column not found: 1054 Unknown column 'fam.f_gedcom' in 'where clause'' in /home/svn/public_html/demo-dev/library/WT/DBStatement.php:86 Stack trace: #0 [internal function]: PDOStatement->execute(Array) #1 /home/svn/public_html/demo-dev/library/WT/DBStatement.php(86): call_user_func_array(Array, Array) #2 /home/svn/public_html/demo-dev/library/WT/Controller/AdvancedSearch.php(558): WT_DBStatement->__call('execute', Array) #3 /home/svn/public_html/demo-dev/library/WT/Controller/AdvancedSearch.php(558): WT_DBStatement->execute(Array) #4 /home/svn/public_html/demo-dev/library/WT/Controller/AdvancedSearch.php(50): WT_Controller_AdvancedSearch->advancedSearch() #5 /home/svn/public_html/demo-dev/search_advanced.php(28): WT_Controller_AdvancedSearch->__construct() #6 {main} thrown in /home/svn/public_html/demo-dev/library/WT/DBStatement.php on line 86

Width of generated thumbnails

Changing the "Width of generated thumbnails" in the tree configuration, clearing the cache does not have any effect. All images use the default width of 100.

Fan Chart Bug

It's easier to tell you this than to create a branch.

The pop-up box that appears on the LH side of the chart when a person is clicked on the main chart should show siblings, in fact it shows the person clicked on.

line 337 of library/WT/Controller/fanchart.php should be "if ($sibling !== $person) {"

ie !== instead of ===

sex_m_9x9.png not visible

Hi,
If I browse my site (http://www.myancestry.de/genealogie) inside the area "News" the sex identifier behind the individuels are displayed as male/female.

If I browse my site with Safari or Chrome the files …/themes/colors/css-1.5.2/images/sex_m_9x9.png und .../themes/colors/css-1.5.2/images/sex_f_9x9.png are not deliverd.

The last update did not resolve the probleme.
Regards, Marko

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.