Git Product home page Git Product logo

countly / countly-server Goto Github PK

View Code? Open in Web Editor NEW
5.5K 225.0 957.0 438.54 MB

Countly is a product analytics platform that helps teams track, analyze and act-on their user actions and behaviour on mobile, web and desktop applications.

Home Page: https://countly.com

License: Other

JavaScript 82.68% Shell 1.98% CSS 3.45% HTML 9.39% Dockerfile 0.02% SCSS 2.48%
web-analytics dashboard mobile-analytics analytics push-notifications crash-reports insights data tracking product-management

countly-server's Introduction

CI CodeQL Analysis

๐Ÿ”— Quick links

๐ŸŒŸ What is Countly?

Countly is a product analytics platform that helps teams track, analyze and act on their user actions and behaviour on mobile, web and desktop applications.

Countly is used to track 1.5B unique identities on more than 16,000 applications via 2,000+ servers worldwide. It securely processes billions of data points every day in the cloud and on-premises, enabling teams of all sizes to build better applications and engaging experiences while maintaining full control over their product analytics data flow.

๐Ÿš€ What are the Countly editions?

  • Countly Lite โ€” Essential plugins/features and a free-to-use, open source, non-commercial license. Available as self-hosted. Suitable for individuals and small organizations.
  • Countly Enterprise โ€” Offers a wider range of plugins/features, granular data, an SLA, and direct support. Available as self-hosted or Countly hosted/managed. Suitable for medium and large organizations.
  • Countly Flex โ€” Our SaaS platform that offers some Enterprise features as core features, and some others as add-ons. Everyone gets their dedicated and fully-managed Countly server(s) in the region they choose. Suitable for individuals, small and medium-sized organizations.

For a detailed comparison of different editions please check here. To try the Countly Flex please visit this page.

Also, please note that SDKs of Countly are the same for all editions.

๐Ÿ“ฆ What is included in this repository?

This repository includes server-side part of Countly, with the following features:

  • Session, view and event collection and reporting
  • Crash/error reporting for iOS, Android, React Native, Flutter, NodeJS, Unity, Java and Javascript
  • Rich and interactive push notifications for iOS and Android
  • Remote configuration to adjust your app's logic, appearance, and behavior on the fly
  • In-app ratings with customizable widgets
  • Built in reports and customizable dashboards
  • Email reports and alerts
  • Hooks to send the data to external parties via email or webhooks
  • Data Manager to plan and manage events and event segmentations
  • Compliance Hub for consent collection and data subject request management
  • User, application and permission management
  • Read and write APIs
  • Plugin based architecture for easy customization

content

๐Ÿ“ˆ What can Countly track?

Countly can collect and visualize data from mobile, web and desktop applications. Using the write-API you can send data into Countly from any source. For more information please check the below resources:

๐Ÿ› ๏ธ Installing and upgrading Countly server

Countly installation script assumes it is running on a fresh Ubuntu/CentOS/RHEL Linux without any services listening on port 80 or 443 (which should also be open to incoming traffic), and takes care of every library and software required to be installed for Countly to run.

There are several ways to install Countly:

  1. The following command will download and install Countly on your Ubuntu or CentOS server.

    wget -qO- https://c.ly/install | bash

  2. For bash lovers, we provide a beautiful installation script (bin/countly.install.sh) in countly-server package which installs everything required to run Countly Server. For this, you need a stable release of this repository available here.

  3. Countly Lite also has Docker support - see our official Docker repository and installation instructions for Docker.

If you want to upgrade Countly from a previous version, please take a look at upgrading documentation.

๐Ÿงฉ API, extensibility and plugins

Countly has a well-defined API, that reads and writes data from/to the Countly backend. Countly dashboard is built using the read API, so it's possible to fetch any information you see on the dashboard using the API.

Countly is extensible using the plugin architecture. If you would like to modify any exiting feature by extending it or changing it, or if you would like to add completely new capabilities to Countly you can modify existing plugins or create new ones. We suggest you read this document if you would like to start with plugin development.

๐Ÿ’š Community

We have a new Discord Server (new as of Apr 2023) for our community ๐ŸŽ‰ Please join us for any support requests, feature ideas, to showcase the application you are working on and for some occasional fun :)

๐Ÿ”’ Security

Security is very important to us. If you discover any issue regarding security, please disclose the information responsibly by sending an email to [email protected] and not by creating a GitHub issue.

๐Ÿ—๏ธ Built with

  • MongoDB โ€” One of the most popular NoSQL databases
  • NodeJS โ€” An open-source, cross-platform JavaScript runtime environment
  • Linux โ€” What we all love using ;-)

Plus lots of open source libraries!

๐Ÿค How can I help you with your efforts?

  1. Fork this repo
  2. Create your feature branch (git checkout -b my-new-super-feature)
  3. Commit your changes (git commit -am 'Add some cool feature')
  4. Push to the branch (git push origin my-new-super-feature)
  5. Create a new pull request

Also, you are encouraged to read an extended contribution section on how to contribute to Countly.

๐Ÿ‘ Badges

If you like Countly, why not use one of our badges and give a link back to us?

Countly - Product Analytics

<a href="https://countly.com/?utm_source=badge" rel="nofollow"><img style="width:145px;height:60px" src="https://count.ly/badges/dark.svg" alt="Countly - Product Analytics" /></a>

Countly - Product Analytics

<a href="https://countly.com/?utm_source=badge" rel="nofollow"><img style="width:145px;height:60px" src="https://count.ly/badges/light.svg" alt="Countly - Product Analytics" /></a>

countly-server's People

Contributors

abhisheksingla02 avatar agajlumbardh avatar ar2rsawseen avatar arturskadikis avatar ayasayadi1 avatar busify avatar can-angun avatar can-keklik avatar cookiezaurs avatar coskunaydinoglu avatar dependabot-preview[bot] avatar dependabot[bot] avatar foysalosmany avatar frknbasaran avatar gorkem-cetin avatar hakandede avatar hilalozturk1 avatar iartem avatar igorklopov avatar ihaardik avatar itsiprikshit avatar john-weak avatar kaanklky avatar kanwarujjaval avatar lvmbdv avatar osoner avatar pnrgenc avatar shaharyar-shamshi avatar waiterzen avatar widatama 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  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

countly-server's Issues

Custom events

It would be cool to have custom events that may be used in different ways, for instance, in games it may be used to track let's say how many players passed certain levels/checkpoints and in regular apps it may be used to measure how many users use specific app features and so on. This supposed to be implemented in SDK as well so we could invoke a special method to track something. I believe you already have it in mind but I would like to bump it a bit :)

package.json

It would be helpful to have a package.json that specified the required modules and versions.

Annotated Example:
http://package.json.nodejitsu.com/

BTW awesome looking tool and web site. I want to drop Google Analytics for this.

Countly debug

Is there any plan to add minimal logging to console for api and frontend? You know even "Listening on port %d" would be helpful.

Dashboard is broken when there no data

Front-end JS throws exception for newly created apps without any stats yet.

  Uncaught TypeError: Cannot call method 'join' of undefined 
  countly.device.detail.js:22

Bar chart when sum=0

I found that if there are occasions where something costs 0 in an in-app purchase, it does not display correctly in a bar chart as the 'Sum' seems to not allow 0 values.

Countly_bug_02

Reports?

This looks fantastic. Great work!

Would love to see reports, as that is a really essential feature for an analytics package.

thanks

App versions

It's very important for us to see how quickly users are upgrading; this isn't currently gathered at all.

session frequency VS retention

I would like to know those new users from a campaign's retention.
For example, the campaign lasts a week. during that week many more new users try my app.
But I like to find out how many of them are still using the app after 1,2,...n days.
So I can compare those users' retention and the other normal users'.

Can you use session frequency to see it?
What's the difference?

Time selector isn't editable

After creating a new app in the admin, I select the right time (London) save. I have successfully tested a hit on the server via the simulator, and I'm hoping the time issue is now preventing the device install submitting data, as if I create a new app on the server then the time appears to be correct for a while until I log off and back in again and I get a red image like this http://yfrog.com/odd4mbp

iOS Device Carrier

I have quite a few iOS sessions that are showing "Carrier" as the carrier name for the session. I've worked with CoreTelephony before. Getting the carrier name is very straightforward and I have never seen it return the string "Carrier" like that. Is Countly doing something weird in the event that there is no carrier present for a given session?

Platform versions

Small issue. it would be cool to see iOS/Android versions in devices tab on dashboard.

Setting up username & password for MongoDB connection

I've tried many configurations, but I'm completely stuck how to set those params in config.js

There are 2 paths for config

countly-server/frontend/express/config.js

with this

var countlyConfig = { 
  mongodb: { 
    host: "localhost", 
    db: "countly", 
    port: 27017, 
  }, 
  web: { 
    port: 6001, 
    host: "localhost", 
    use_intercom: true 
  } 
};

and countly-server/api/config.js

var countlyConfig = { 
    mongodb: { 
        host: "localhost", 
        db: "countly", 
        port: 27017, 
        max_pool_size: 1000 
    }, 
    api: { 
        workers: 0, 
        port: 3001, 
        host: "localhost", 
        safe: false, 
        session_duration_limit: 120, 
        max_sockets: 1024, 
        city_data: true 
    }, 
    apps: { 
        country: "TR", 
        timezone: "Europe/Istanbul", 
        category: "6" 
    } 
};

How to set username & password for them?

I've tried
username:
password:
and username:password@localhost options, but they weren't working for me.

Groups or tags

It would be great tobBe able to group applications into groups or categories.

Or alternatively, be able to associate "tags" to applications. That way you can assign more than one tag to a application.

Then be able to filter/select group or tag for viewing.

If appliation number aggregation(issue #7) was implemented, then show aggregated numbers based on a group of applications. Or a application with the specific "tag"

using expressjs in api

Is there any reason not to use expressjs in api?

It would be nice to use because:

  • easier read
  • easier to maintain
  • frontend could mount the api, so countly could be deployed without any proxy

Custom Event order on "edit view" is not updated

Steps to reproduce:

  1. Consider 3 events: Event A, Event B, Event C
  2. Rearrange their orders to Event B, Event A, Event C via "edit view" (the Gear icon on top left)
  3. Save
    • Event order on sidebar updated correctly (B -> A -> C)
  4. Invoke "edit view" again
  5. Order in the list is still intact (A -> B -> C)

This behavior is quite annoying when you have a lot of custom events, and you want to order them properly.

segmentation doesn't support number value

TypeError: Object 100 has no method 'replace'
at processEvents (/root/countly/api/api.js:492:27)
at /root/countly/api/api.js:75:4
at Collection.findOne (/root/countly/api/node_modules/mongoskin/node_modules/mongodb/lib/mongodb/collection.js:882:34)
at Cursor.toArray (/root/countly/api/node_modules/mongoskin/node_modules/mongodb/lib/mongodb/cursor.js:133:9)
at Cursor.each (/root/countly/api/node_modules/mongoskin/node_modules/mongodb/lib/mongodb/cursor.js:173:11)
at Cursor.nextObject (/root/countly/api/node_modules/mongoskin/node_modules/mongodb/lib/mongodb/cursor.js:467:35)
at Cursor.close (/root/countly/api/node_modules/mongoskin/node_modules/mongodb/lib/mongodb/cursor.js:687:5)
at Cursor.nextObject (/root/countly/api/node_modules/mongoskin/node_modules/mongodb/lib/mongodb/cursor.js:467:17)
at Cursor.each (/root/countly/api/node_modules/mongoskin/node_modules/mongodb/lib/mongodb/cursor.js:165:12)
at process.startup.processNextTick.process._tickCallback (node.js:244:9)

Filter events by segmentation value(s)

I have events reported with multiple segmentation properties. I'd really love to be able to see the data filtered by a specific segmentation value.

For example, events might have A=[morning,afternoon,evening] and B=[win,lose]. I'd like to see counts of each possible B value, where A=morning.

some display problem with platforms (12.07)

I am running a clean install of 12.07, and sending data to api using HTTP interface.

my system at
http://countly.ianalytics.info
user:demo
pass:demo

for app wikoo, platform versions' data is missing.
for app album, platform versions will show up at default. after click the "iOS|android" icon on the left top, it will only show iOS, and can't return to both/android.
after click at album's platform icon, wikoo's iOS platform diagram show up.

the error msg at console is :

Uncaught TypeError: Cannot call method 'trigger' of null jquery.flot.pie.min.js:1
m jquery.flot.pie.min.js:1
t jquery.flot.pie.min.js:1
f.event.dispatch jquery-1.7.1.min.js:3
f.event.add.h.handle.i jquery-1.7.1.min.js:3

Event Segmentation Breakdown Over Time

I would like the ability to see a time domain view of an event's segmentation breakdown. Right now you can see the total counts for each specific value of a segmentation value, I'd like to see how those counts happened over time. It would look like the current time graph for the event (with no segmentation selected) but the graph would have a colored series for each specific value of the segmentation key.

Countly bounded to localhost

Both front-end and api are bounded to localhost:

app.listen(common.config.api.port, 'localhost');

Would be nice to put such things to config rather than hardcode them. I don't use ngynx for countly that's why it doesn't work as expected for me.

Default HTTPS

Hi,
Is there a way to easily force HTTPS ?
Why did you choose HTTP (not HTTPS) in the default configuration ?
Thank you.

Catering for different stores

At the moment there is support for different platforms, is there going to be the option for having multiple stores as sub-categories. i.e. Google Play, Amazon, Samsung, Nook, etc?

It is nice seeing it all rolled up into one, but for when reporting comes out it would be great to be able to compare different stores.

Support for context path/ mounting

Hi folks,

right now I use one machine to deploy all my analytics stuff (sentry, countly). Usually I run those services so that they only listen on localhost. Then I use nginx to proxy the calls to the individual services. Sometimes there's also load balancing involved through nginx' upstream module.

Since I want to run all services as "subdirectories" it would be necessary that countly supports something like this:

var countly = express.createServer();
countly.use('/countly', app);
countly.listen(countlyConfig.web.port);

So my final setup would look something like this:

x.company.com/sentry
x.company.com/countly
x.company.com/countly/i
x.company.com/countly/o

What do you think of supporting this?

iPhone 5 device label

The iPhone 5 is still labeled as "iPhone5,x" where "x" is each different worldwide variant.

Segmentation data not useful

At the moment it is displaying a stacked chart of count and sum

There should be a button so that it shows either count or sum.

e.g.

2 segment values for in-app purchasing

1st segment value = 20 items at $1 each
2nd segment value = 1 item at $21

In the current format:
the first segment would have a bar 40 high
the second segment would have a bar 22 high

As you can see this is incorrect as it gives the impression that the first segment is more valuable.

A simple button / tickbox to enable or disable the value or sum in the graph would work perfectly.

CentOS support question

Hello,

I just installed Countly on a CentOS 6.3 server this morning. It's working pretty good except I can't get the supervisord stuff working. I have a local user the api and frontend run under and I have to start them manually via node and background them.

This works, but obviously ideal. I know your focus is Ubuntu, but is there any plans in the future to support CentOS?

data privacy

Hi,

to use this software in europe, you need to ensure, that you fit to the european data privacy policies.
In the first place, anonymization of IP addresses - or what even makes it possible, to identify a user (device token, etc.).

Is there a possibility to fit these regulatory needs?

regards
Henrik

dashboard can't retrieve data from api server

Actually, I didn't use your installer"countly.install.sh",because i don't want to use supervisor&nginx.
and I do all these manually, including installing the neccessary package in ubuntu.
here comes the little problem, the dashboard can't retrieve data from api server, because the snippet just generate IP without the port number

  serverip="`ifconfig | sed -n 's/.*inet addr:\([0-9.]\+\)\s.*/\1/p' | grep -v 127.0.0.1`"

while, when i start up the api server , its default server port is 3001,so I guess it is the reason why I can't get my data. when i change the content of countly.config.js from

  countlyCommon.READ_API_URL = "9.123.146.245/o"

to

  countlyCommon.READ_API_URL = "9.123.146.245:3001/o"

it works!
so is that your problem or mine?
(btw: 9.123.146.245 is my computer ip)

More segmentation options for custom events

For me, custom events are 90% of what I need.

It would be great to be able to filter or segment this data using all the other analytics: country, device, OS version, etc.

Scenario: Using it for Web Analytics

Scenario : I have 100,000+ websites and I want to track each one of them with different id. Initially what I need is simple analytic : page view, total view, total visitor,region...
And I don't really need the realtime part. do you think using countly server good idea?

/javascripts/countly/countly.template.js

when I want to do the DEVELOPMENT and replaced /frontend/express/public/javascripts/min/countly.lib.js to /javascripts/countly/countly.template.js
and relanuch the app.js and api.js. the dashboard page stop at loading animation.
My question is could I replace those file because the template.js is much easy to read. thx

Aggregation of app data to single graphs

It would be cool if you could aggregate all applications user/session/platforms/etc into a main dashboard page?

Possibly even only show a sum of a "group/categories" of apps.

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.