[已开源/文章教程]独立开发 一个社交 APP 的源码/架构分享 (已上架)
0x00 背景
真不是和被推荐了2天的博客园一位大神较真,从他那篇文章的索引式文章内容也学习到了很多东西,看评论区那么多对社交APP源码有兴趣的,正巧我上周把我的一个社交APP开源了,包括android源码和基于Laravel服务器的源码,并且之前有文章完整的介绍了Android端迁移到MVP架构的实战内容,和如何从linux小白到部署代码的内容,基本上从如何开发一款社交app到如何重构优化的思想都能体会到。今天就组织一篇文章介绍一下,欢迎有兴趣朋友star,pull。一起为开源社区贡献点力量。
android端代码:https://github.com/huijimuhe/monolog-android
web端代码:https://github.com/huijimuhe/monolog-web
应用商店apk-demo:http://shouji.baidu.com/software/9276490.html
我一直觉得代码最能解释问题,在代码中已经给出了丰富的注释,并且以前写过文章讨论。
有哪些增删改查这样的功能模块介绍我就不写了,直接给文章链。
你想知道我图片用的glide还是fresco,请查看代码,这种文字我就不码了,见谅。
0X01知识点/技能树
你可以通过这个项目了解到的Android方面知识点包括:
1.如何集成环信IM功能(聊天、新消息提示badage、联系人列表)
2.如何获取地理位置
3.RecyclerView自定义,包括如何添加头和如何根据itemtype显示不同的列表内容
4.如何像微博朋友圈一样选择图片、压缩、上传七牛云服务器
5.如何让自己的android代码迁移到MVP架构
6.如何集成广点通
7.如何集成微信登录
8.Fragment的动画效果
9.如何集成Gson
...
你可以通过这个项目了解到的Web方面知识点包括:
1.如何爱上Laravel
2.如何从linux小白到部署
3.如何操作mongodb
4.如何做lbs查询
5.各种基础增删改查
6.如何只用>3天时间基于adminLTE优雅的写一套后台管理库
7.如何集成微信账号绑定
8.如何集成环信IM
9.不用session和cookie,如何自定义一套基于salt的token验证模块
...
0X02 Android端
1.功能包括但不限(省事就直接复制应用商店介绍了):
无论何时,你都有一个故事,想找一人诉说。发一张照片,写一段文字。独白故事会随机推送三个用户,猜出独白的发表人,开启一段邂逅。
在这里,从一段独白开始了解对方。冥冥中定是天意,让TA知道你的独白。
【操作简单】下拉刷新独白,点击头像猜谁是作者。
【来自附近】定位功能只用于搜索你附近的独白或发布独白时使用。
【天意玲珑】能猜中对方身份,那是独白只为你说的惊喜。
【极简设计】黑白两色的干净色调,只有独白的文字和图片会打动你。
【私信聊天】只有猜对作者后才可开始私信聊天。
【保证隐私】微信绑定登录,只为节约你上传头像和用户名的时间。不翻你的通信录也不会读取任何你的手机信息。
2.从基本架构迁移到MVP架构的思路及代码指南:
网上很多相关文章给的都是toy code,看得云里雾里的,我希望我这套文章你看完理解能更深入点。
3.应用商店截图的PSD文件我也发出来了
做个好看点,至少不是屏幕截图的商店应用截图,用户看起来亲和一点。
我的psd文件已经同时发布到github中了,你只要把自己的截图添加到psd里面改改就能用。希望对ps操作比较小白的朋友有用。
0X02 Web端
功能如上章节介绍,文章列表如下:
因为是去年的项目,基于Laravel4.2开发,代码也做了重构,数据处理业务被剥离到Repository层中。
Laravel4.2的Auth模块没有自带salt,我已修改,请搜索TODO查看。
0X03另外一个关注UI学习的开源项目
UI很大程度借鉴了一款出色的app:留白。走极简风格,我的margin、灰色的运用肯定不如专业美工来的讲究,但从代码到应用商店截图全部我一个人做的,自豪感爆棚啊:)
最近在持续pull一个精仿鲜城app的android项目,或许可以让你知道下表的知识点:
1.RecyclerView怎么嵌套RecyclerView;
2.如何用RecyclerView实现不同type的文章正文列表;
3.如何用Gson自定义JsonApdater实现动态数据解析(根据不同的type解析不同的数据)
4.如何自定义drawable
5.如何实现9宫格的图片列表
6.如何实现像鲜城一样漂亮的RecyclerView header
地址在这里:https://github.com/huijimuhe/common-layout-android
0X04欢迎Pull和提issue
我不是大神,轮子都是造好的直接拿来用,开源纯粹就是为了相互提高和学习,欢迎pull和提issue。请不要因为splash有广点通就觉得我在写软文(这让我最受不了了..),要说完整包含app和web源码的开源项目,并且还有系列文章介绍的项目,不多吧。以学习促进为目的,大家一起去开源吧:)
[已开源/文章教程]独立开发 一个社交 APP 的源码/架构分享 (已上架)的更多相关文章
- 独立开发 一个社交 APP 的架构分享 (已实现)
(本博客为原创:http://www.cnblogs.com/linguanh/) My BananaCloud Android Application 前言: 这算是我的第一个 完完全全 由自 ...
- 记一个社交APP的开发过程——基础架构选型(转自一位大哥)
记一个社交APP的开发过程——基础架构选型 目录[-] 基本产品形态 技术选型 最近两周在忙于开发一个社交App,因为之前做过一点儿社交方面的东西,就被拉去做API后端了,一个人头一次完整的去搭这么一 ...
- 独立开发一个App是一种怎样的体验?
(本文原文是我在知乎上写的一篇回答:独立开发一个 App 是一种怎样的体验?) UWP业余开发者表示,非常愿意做一股清流.在喧闹无比的iOS和Android平台,为了给应用造势,太多人费尽心思,勾心斗 ...
- 手把手教你用Vue2+webpack+node开发一个H5 app
手把手教你用Vue2+webpack+node开发一个H5 app 前一篇vue2 + webpack + node 开发一个小demo说到了用vue的一些基本用法,这一篇就讲一个复杂一点的更完整的 ...
- 【Android 系统开发】CyanogenMod 13.0 源码下载 编译 ROM 制作 ( 手机平台 : 小米4 | 编译平台 : Ubuntu 14.04 LTS 虚拟机)
分类: Android 系统开发(5) 作者同类文章X 版权声明:本文为博主原创文章 ...
- Spring Boot 2.0系列文章(五):Spring Boot 2.0 项目源码结构预览
关注我 转载请务必注明原创地址为:http://www.54tianzhisheng.cn/2018/04/15/springboot2_code/ 项目结构 结构分析: Spring-boot-pr ...
- 【NopCommerce源码架构学习-一】--初识高性能的开源商城系统cms
很多人都说通过阅读.学习大神们高质量的代码是提高自己技术能力最快的方式之一.我觉得通过阅读NopCommerce的源码,可以从中学习很多企业系统.软件开发的规范和一些新的技术.技巧,可以快速地提高我们 ...
- NopCommerce源码架构详解--初识高性能的开源商城系统cms
很多人都说通过阅读.学习大神们高质量的代码是提高自己技术能力最快的方式之一.我觉得通过阅读NopCommerce的源码,可以从中学习很多企业系统.软件开发的规范和一些新的技术.技巧,可以快速地提高我们 ...
- 如何实现一个 Virtual DOM 及源码分析
如何实现一个 Virtual DOM 及源码分析 Virtual DOM算法 web页面有一个对应的DOM树,在传统开发页面时,每次页面需要被更新时,都需要手动操作DOM来进行更新,但是我们知道DOM ...
随机推荐
- Android海康监控视频调用demo
一. 开发环境 1. 操作系统:windows7(X64) 2. 开发工具:eclipse adt Build: v22.2.1-833290 JDK7 android SDK 3. 客户端设备版本: ...
- HTML5游戏开发引擎,初识CreateJS
CreateJS为CreateJS库,可以说是一款为HTML5游戏开发的引擎.打造 HTML5 游戏,构建新游戏,提供构建最新 HTML5 的技术.你可以通过这个网站学习如何构建跨平台和跨终端游戏.这 ...
- SQL Server 2008 R2——VC++ ADO 操作 存储过程 向datetime类型参数传入空值
==================================声明================================== 本文原创,转载在正文中显要的注明作者和出处,并保证文章的完 ...
- 深入理解JVM—JVM内存模型
我们知道,计算机CPU和内存的交互是最频繁的,内存是我们的高速缓存区,用户磁盘和CPU的交互,而CPU运转速度越来越快,磁盘远远跟不上CPU的读写速度,才设计了内存,用户缓冲用户IO等待导致CPU的等 ...
- CentOS系统在不重启的情况下为虚拟机添加新硬盘
一.概述 用过虚拟机的都知道,如果在系统运行的时候去给虚拟机添加一块新设备,比如说硬盘,系统是读取不到这个新硬盘的,因为系统在启动的时候会去检测硬件设备.但是我们也可能会遇到这样的情况,比如正在运行比 ...
- 描述Linux运行级别的0-6的各自含义(计时1分钟)
中文: 0:关机 1:单用户模式 2:无网络支持的多用户模式 3:有网络支持的多用户模式(文本模式,工作中最常使用的模式) 4:保留,未使用 5:有网络支持有X-Window支持的多用户模式 6:重新 ...
- Linux rpm 查询
[root@wang /]# rpm -qa // 查看安装所有包 [root@wang /]# rpm -qa |grep vim // 查询所安装的包 +包名 [root@wang /]# rpm ...
- 地图编辑器V3
V3.2.4 (2014-07-03) ---------------------------1. 保存地图的锁定与可视状态:2. 地图单独存为map格式结尾的文件与导出的XML文件区别:3. 修正瓷 ...
- javascript日历控件——纯javascript版
平时只有下班时间能code,闲来写了个纯javascript版.引用该calendar.js文件,然后给要设置成日历控件的input的id设置成calendar,该input就会变成日历控件. < ...
- Brackets(bestcoder)
Brakerts 每次询问一个区间都根据最开始的线段树在询问的区间重建一棵线段树 view code#include <iostream> #include <cstdio> ...